2011-03-02 69 views
0
$("div#pay-by-this-method ul li a").click(function(){ 
    $("div#pay-by-this-method ul li").removeClass("selected"); 
    $(this).parent("li").addClass("selected"); 
}); 

<div id="pay-by-this-method" class="append-bottom"> 
<ul id="payment-method-chooser"> 
    <li id="" class=""><a href="#" rel="" class="" >Credit/Debit Card</a></li> 
    <li id="" class=""><a href="#" rel="" class="">Net 30 Account</a></li> 
</ul> 
</div> 

此函數適用於兩個鏈接。第一個鏈接默認選中,並且已選擇「已選擇」類。當我點擊另一個鏈接時,removeClass可以工作,但addClass不會爲其他鏈接觸發,也不會再次點擊第一個鏈接(它應該)。JQuery addClass無法正常工作

我不明白爲什麼這個函數不工作,沒有太多的理由。我在這裏錯過了什麼嗎?

順便說一句,在函數內部還有更多的代碼(我不能公開發布的if語句),並且工作得很好。我可以觸發警報,並且幾乎可以在此功能中執行其他任何操作,並且它完美地工作。 removeClass也能正常工作,只是addClass沒有被觸發。

+0

你能分享這個html代碼嗎? – amosrivera 2011-03-02 16:18:56

+0

如果刪除「li」作爲.parent()的參數,會發生什麼情況? – Cronco 2011-03-02 16:19:12

+0

添加了代碼。不幸的是,我想,我不得不去掉任何可能有用的東西。專有的東西,對不起! – jennifer 2011-03-02 16:29:20

回答

5

你可能想

$(this).closest('li').addClass('selected'); 

的「.parent()」功能只適用於直接父元素,當你傳遞一個選擇,不符合你的實際父得到一個空的jQuery列表。 「.closest()」函數查找與選擇器匹配的第一個祖先,不管它有多遠。

+0

偉大的有用信息,謝謝!不幸的是,它沒有解決問題。它的功能完全一樣。 – jennifer 2011-03-02 16:29:51