使用Jquery和Jinja2在每个元素的循环内提供onclick事件

Dav*_*vid 5 jquery jinja2

因此,首先,对于一般的编程和对Jinja2的新内容来说,它是相当新的.所以我使用python和GAE作为服务器端的东西.我基本上从网上获取一些数据,然后通过它解析并在网页上显示它.为了正确显示它我使用jinja2循环遍历不同的元素.

{% for new in news %}
    <div>{{new}}</div>
    <button id = "button"></button>
    <div id ="description"> {{new.description}}</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

描述部分将被隐藏,直到用户单击它为止

$(#button).each(function(){
    $(this).click(function(){
      $(description).toggle();
    });

});
Run Code Online (Sandbox Code Playgroud)

这个html是一个单独的页面,它正在Ajaxed进入我的主html页面.所以基本上我不知道如何选择循环中的每个元素来显示个别描述.在Jquery中使用.each()函数似乎是一个很好的起点,但它没有正常工作.有没有什么方法可以将div id改为每次循环时不同的东西,比如为它添加一个数字或者某些东西以使每个不同?在此先感谢您的帮助

Aar*_*ier 9

我正在做类似的事情.

正如您现在可能知道的那样,在Jinja2中循环外部设置的变量不能在循环内操作.Jinja2的范围有时令人困惑,但我怀疑这是故意试图从模板中保留太多逻辑.

无论如何,我的id每个新闻条目都有价值.

{% for entry in news %}
    <div>{{entry.subject}}</div>
    <button id="button_{{entry.id}}" class="clickme">Click Me!</button>
    <div id="description_button_{{entry.id}}">{{entry.description}}</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

请记住,HTML ID应该是唯一的.对于jQuery,类似于:

$('.button').each(function(){
    $(this).click(function(){
        $('#description_'+$(this).attr('id')).toggle();
    });
});
Run Code Online (Sandbox Code Playgroud)

它的作用是获取按钮的ID值并将其附加到描述的ID选择器div.

编辑,这是一个工作示例:http://jsfiddle.net/VQKee/