2010-10-04 69 views
1

有人可以幫我解決這個問題嗎?JQuery獲取列表中的所有項目

我有一堆列表項目,當點擊其中一個項目時,我想從同一個UL中的每個列表項目中刪除「selected」類別屬性。

我有一個JavaScript函數:

<script type='text/javascript'> 

function clearSelectedCSS(item) { 

    $(item).parent().$('li.itemselected').removeClass('itemselected'); 

} 
</script> 

它是通過每個L1的onclick部分叫,和「本」被傳遞。

我不能完全弄清楚JQuery,有人能給我一個指針嗎?我的代碼基本上想要選擇被點擊的項目,獲取它的父項,然後選擇屬於該父項的所有列表項(即列表中每個列表中被點擊過的每個具有'itemselected'類的列表項),然後刪除類'項目選擇'從他們所有。

回答

1
$(item).parent().find('li.itemselected').removeClass('itemselected'); 
+0

非常感謝! – NibblyPig 2010-10-04 14:54:18

3

無需獲得.parent()時,你可以抓the .siblings()

$(item).siblings('.itemselected').removeClass('itemselected'); 

這將是更有效,因爲.parent().find()將測試所有子孫元素。即使你做了.parent().children(),你也添加了不必要的遍歷。


編輯:我不是這個問題肯定,如果你想包括被點擊的類去除的一個。

如果是這樣,你可以這樣做:

$(item).parent().children('.itemselected').removeClass('itemselected'); 

$(item).siblings().andSelf().filter('.itemselected').removeClass('itemselected'); 
+0

看到我的答案爲什麼這些不相等。 – lonesomeday 2010-10-04 15:02:06

+0

@lonesomeday - 我們有相同的答案。什麼是不相等的? – user113716 2010-10-04 15:04:51

+0

$(item).parent()。children()包含原始項目,$(item).siblings()不包含。 – lonesomeday 2010-10-04 15:06:27

0

如果您想選擇除了被點擊的一個所有LIS,您可以使用$().siblings()

$(item).siblings('li.itemselected').removeClass('itemselected'); 

使用parent().find('li.itemselected')將包括被點擊的<li>

0

我這個發揮各地,直到我得到這個工作:

<head>  
<script> 
    function clearSelectedCSS(item) { 
     $('#' + item.parentElement.id + ' > li').removeClass('exampleClass'); 
    } 
</script> 
</head> 

<body> 
<form id="form1"> 
    <ul id="List1"> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">First Item</li> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">Second Item</li> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">Third Item</li> 
    </ul> 

    <ul id="List2"> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">Fourth Item</li> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">Fifth Item</li> 
     <li class="exampleClass" onclick="clearSelectedCSS(this)">Sixth Item</li> 
    </ul> 

</form> 
</body> 
</html> 

基本上,我必須解決的項目的父拿到<ul>容器對象,然後用>子選擇器來獲得收集<li>。此時.removeClass()呼叫正常工作。希望有所幫助 -

相關問題