0

我想创建一个事件侦听器,在单击某个元素时触发一些代码,以及一个在单击该元素之外的任何其他内容时切换一些代码的事件侦听器。到目前为止,我想出的只是制作两个处理程序,一个用于主体,一个用于元素,并稍微延迟代码setTimeout()以避免两个处理程序发生冲突。它看起来很丑,而且,不对。有没有更好的方法来做我需要的事情?或者,有没有我可以使用的“除此之外的所有元素”处理程序?我一直在使用 JQuery 进行此操作,因此欢迎和首选依赖于库的答案。

4

2 回答 2

2

也许你想要这样的东西(如果我理解这个问题)

HTML:

<button id="btn">Click</button>

JS:

$('body').on('click', function(e){
    if(e.target.nodeName=='BODY') 
    {
        // clickd on body
    }
    else if($(e.target).attr('id')=='btn')
    {
        // clickd on button
    }
});

例子

于 2013-01-12T09:47:37.137 回答
1

如果要将点击绑定到所有元素而不是 id 为“div1”的元素,可以使用如下:

$('body').on('click', ':not(#div1)', function(){ 

});
于 2013-01-12T09:36:36.830 回答