2013-02-14 40 views
0

我試圖點擊功能添加到除非父李有一定的階級(.current)A元素排除當父李有

下似乎不工作:

$('ul li:not(.current) a').click(function (e) { 

這裏有一個的jsfiddle:

http://jsfiddle.net/WvPE7/

我不想點擊功能爲 'UL li.current一個' 執行 - 只 'UL李一'(無.current )

當然,我錯過了很簡單的東西......任何幫助讚賞! :)

回答

2

您應該增加而不是使用:not('.current')小的狀態。

if ($(this).parent().hasClass('current')) return; 

當您運行$('ul li:not(.current) a'),在這一點上,有帶班目前沒有利的事件綁定。

DEMO:http://jsfiddle.net/WvPE7/5/

全碼:

$('ul li a').click(function (e) { 
    e.preventDefault(); 

    if ($(this).parent().hasClass('current')) return; 

    $('p').hide(); 
    $('li').removeClass('current'); 
    $(this).parent().addClass('current'); 
    var myClass = $(this).attr('class'); 
    $('p.' + myClass).fadeIn(); 
}); 
-1

反過來

$('ul li:not(.current) a').click(function (e) { 

$('ul').on('click', 'li:not(.current) a', function (e) { 
+0

仍然沒有工作,請參閱:http://jsfiddle.net/WvPE7/2/ – traummaschine 2013-02-14 21:30:18

+0

@RT檢查我的答案或不確定 – 2013-02-14 21:32:58

+0

回答看到我在更新http://jsfiddle.net/WvPE7/6/ – Derek 2013-02-14 21:34:02

1

可以使用.on()方法簡單代表團做到這一點:

$('ul').on('click', 'li:not(.current) a', function(e) { 
    // ... 
}); 

您可以瞭解更多有關.on()here


這是在行動:http://jsfiddle.net/WvPE7/7/

+0

爲什麼downvote? – 2013-02-14 21:35:53

+0

你的回答和我的恐怕沒有什麼不同。請確保在發佈之前檢查其他人的答案。不要忘記,你也可以貢獻給其他人的答案 – Alexander 2013-02-14 21:36:31

+2

對不起,我沒有意識到我使用的是受版權保護的代碼。 – 2013-02-14 21:37:40