2013-02-13 66 views
0

我在'#id'上有委派的點擊事件。js單擊委託確定是否不是元素

不過,我想知道有一種功能,當event.target不是「#ID」

$(document).on('click', '#id', handler) 

function handle(event){ 
    el.show(); 

// I want to do if current click is not '#id', el.hide(); 

} 

我明白了註冊文檔上的事件可以做到這一點,但我不想註冊一個事件如下所示。有沒有另外一種方法可以確定目標是不是元素?

$(document).on('click', handler) 

function handle(event){ 
    $(event.target).is(el) 
    ? el.show() 
    : el.hide();  
} 
+2

有什麼用例?下拉菜單? – 2013-02-13 06:29:31

+0

不,只顯示或隱藏元素 – Till 2013-02-13 06:31:29

+1

如果你想捕捉點擊不是'#id'的東西,在'document'上設置委託是唯一的(實用的)方法。但是不知道你的用例是什麼,這將很難幫助你。 – 2013-02-13 06:32:42

回答

2

我不知道如果我完全明白的問題,而是:

$(document).click(function (e) { 
    if ($(e.currentTarget).is('#div')) { 
     // this is the target div 
    } 
}); 
+0

謝謝,我已經知道這一點了,就像我說的那樣。 – Till 2013-02-13 06:35:06

+0

那麼爲什麼這不是適合你的用例? – Vinay 2013-02-13 06:35:48

+0

我問這個的原因是因爲如果註冊點擊文件,我會喜歡在Firefox上失去右鍵點擊功能,而不是在Chrome和IE上 – Till 2013-02-13 06:36:04

1

嘗試使用:

document.addEventListener('click',function(e) { 
    if ($(e.currentTarget).is(el)) { 
    // do something 
    } 
}); 
相關問題