2013-02-13 47 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 
    } 
});