2013-04-27 98 views
0

我試圖讓.click()事件在div.content上工作,除非點擊某個特定類的東西,比如.noclick。例如HTML:從jQuery選擇中排除元素

<div class="content"> 
    <a href="#" class="noclick"> 
</div> 

這樣做行不通,因爲<a>標籤是不是技術上的選擇:

$('.content').not('.noclick').click(function(){/*blah*/}); 

我怎樣才能獲得的點擊功能,如果我點擊.content任何地方,除了工作與類.noclick

回答

3

你不得不從回調中排除它們:

$('.content').click(function(e) { 
    if ($(e.target).hasClass('noclick')) return; 
}); 

或者離開這些元素停止事件:

$('.noclick').click(function(e) { 
    e.stopPropagation(); 
}); 

我會與第二個去。您可以放下它,並且您的當前代碼(減去.not())將起作用。

+0

啊'e.target'就是我一直在尋找。謝謝! – 2013-04-27 06:05:46

+0

@CezaryWojcik:我會和第二個人一起去。它看起來更好,並做同樣的工作。 – Blender 2013-04-27 06:06:13

+0

我還有其他條件,所以第一種更適合。不過謝謝。 – 2013-04-27 06:09:45

3
$('.content').click(function(event) { 
    // ... 
}).find('.noclick').click(function(event) { 
    event.stopPropagation(); 
}); 
0
$('.content').click(function(e){ 
    if(!$(e.target).is('.noclick')){ 
     // Handle click event 
    } 
}); 
0
$('.content'). 
on('click', '.noclick', function(){return false;}). 
click(function(){alert("click")}) 

取消對「.noclick的點擊次數,但火災點擊別處

http://jsfiddle.net/FshCn/