2016-07-28 80 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的主鍵;以便您可以根據您的進一步行動。