當用戶點擊一個元素或其中的任何元素時,我需要觸發一個事件,除非他點擊了一個<a>
元素。JQuery .click()選擇器忽略<a>子元素?
這是我現在想:
$("div:not(a)").click(function(e) {
alert("hello world");
});
您可以更好地理解這裏吧:
我怎樣才能做到這一點?
當用戶點擊一個元素或其中的任何元素時,我需要觸發一個事件,除非他點擊了一個<a>
元素。JQuery .click()選擇器忽略<a>子元素?
這是我現在想:
$("div:not(a)").click(function(e) {
alert("hello world");
});
您可以更好地理解這裏吧:
我怎樣才能做到這一點?
由於您的div
從來都不是a
,這是不行的。
你必須檢查你的目標元素爲a
標籤是這樣的:
$('div').click(function(event) {
var $target = $(event.target);
if(!$target.is("a")) {
alert("hello world");
}
});
我已經更新了你的小提琴:Have a look
這看起來很詭異:)你可能想要更新你的「e」參數爲「事件「來反映您在功能中使用的對象。 –
謝謝,沒有注意到。 :-) –
你可以使用:
$("div").click(function (e) {
if (e.target.nodeName.toLowerCase() != 'a') alert("hello world");
});
這是未經測試,但希望給你的想法:
$(function(){
$('div').click(function(e){
if($(e.target).is('a')){
e.stopPropagation();
}
});
});
[阻止父事件處理程序執行]的可能重複(http://stackoverflow.com/questions/1398582/prevent-execution-of-parent-event-handler) –
僅供參考,'div:不(a)'選擇器沒有多大意義。這意味着*「選擇標籤名稱爲'div'的每個元素都沒有標籤名稱'a' *」。由於一個元素不能有兩個標籤名稱,'div:not(a)'相當於'div'。 –
[check元素類型被點擊]的可能重複(http://stackoverflow.com/questions/17797038/check-element-type-clicked) –