2011-03-02 68 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