fri*_*ton 2 javascript jquery global css-selectors
如果我有一个按钮:
<button id="button1">
Run Code Online (Sandbox Code Playgroud)
通常我会写:
$("#button1").click(function ()
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
但我想定义一个响应所有点击事件的功能,除非有人点击此按钮.
是否有一个选择器允许我定位文档中的所有其他可点击元素除外button1?
你可以使用:not selector:
$('button:not(#button1)').click(function(){
//Do something
});
Run Code Online (Sandbox Code Playgroud)
上面的选择器将匹配除id ="button1"之外的所有按钮元素.
如果你真的要选择body标签下的所有元素,你可以使用"All"(*)选择器,也可以使用:not(selector)或.not(expr)排除元素:
$('body *:not(#button1)').click(function(){
//Do something
});
Run Code Online (Sandbox Code Playgroud)
要么
$('body *').not('#button1').click(function(){
//Do something
});
Run Code Online (Sandbox Code Playgroud)
如果这样做,您可能会遇到一些事件冒泡或传播问题,您可以使用event.stopPropagation函数处理此问题.
我知道你已经接受了上面的答案,但我会强烈反对这一点.您可以使用事件委派来执行您想要的操作,同时减少dom的开销.
我知道.live()存在但是太多的实时处理程序也会影响性能.我更喜欢事件代表旧式.
在这里演示
$(function(){
$('body').click( clickFn );
});
function clickFn( ev ) {
if (ev.target.id != 'button1' ){
//do your stuff
console.log('not a #button1 click');
}
}
Run Code Online (Sandbox Code Playgroud)