2016-07-28 79 views
2

我在Django的帮助下做服务器端渲染。在我的Django模板中,循环遍历从我的数据库获得的所有值。 jQuery中同时选择一个值,JS给我从数据库中获取的所有值,但我只想要选择的值Django JQuery遍历所有选项

Views.py

def theme(request): 
    context={} 
    context['All']=Theme.objects.all().count() 

    for t in ThemeCategory.objects.all(): 
     context[t.categoryName]= t.theme_set.count() 

    context=collections.OrderedDict(sorted(context.items())) 
    return render(request,'theme-list.html',{'category_name':context}) 

在模板

<ul class="pick-tags" > 
    {% for category_name,count in category_name.items %} 
     <li id="item_cat"> 
      <span id="item_cat_name">{{ category_name }}</span> 
     </li> 
    {% endfor %} 
</ul> 

jQuery中林选择所需的值

$('li#item_cat').on('click', function() { 
    alert($('span#item_cat_name').text()) 
}) 

但是不给我一个单一的值,这是我从DB获得的所有价值。

我应该如何获得当点击<li>

获得选择的值任何帮助将是有益的

+0

http://stackoverflow.com/questions/6276835/onclick-event-pass-li-id-or-value。也可以参考http://stackoverflow.com/questions/27523379/getting-selected-item-from-ul-li-jquery – 2016-07-28 06:58:47

回答

1

,首先只有一个值,每个HTML元素的ID应该是唯一的。并且您正在使用相同的ID创建多个lispan元素。确保它是唯一的,以防止不必要的错误。如果需要,最好使用类和数据属性。

其次,你需要获得所选元素,没有任何元素的文字,所以你需要使用this

$(this).find('span').text() 
1

在您的模板,你给每个<span>元素相同标识符(item_cat_name)。您的第二个jQuery选择器选择具有该标识符的所有<span>元素。

要解决这个问题,你的jQuery更改为类似:

$('li').on('click', function() { 
    alert($(this).children('span').text()) 
}); 

这只会显示直接点击<li>元以下<span>元素(使用$(this)的关键在这里)的文本。

此外,我建议给每个<span>元素一个唯一的标识符,例如, ThemeCategory的主键;以便您可以根据您的进一步行动。