Javascript 使用:not()筛选事件处理程序中的元素

Javascript 使用:not()筛选事件处理程序中的元素,javascript,jquery,css-selectors,Javascript,Jquery,Css Selectors,我对这件事感到很困惑。在普通CSS中,它似乎相当简单: 节{/*按预期重写*/ 颜色:红色; } 输入{ 颜色:绿色;/*按预期效果*/ } :非(输入){ 颜色:蓝色;/*效果与预期一致*/ } 同侧眼睑 问题在于按键向下事件从输入中弹出。如果使用:not(input),则当事件刚刚在input元素初始化时,处理程序将不会启动,但当事件冒泡到部分元素时,它将启动。您可以通过检查函数内部的this来检查这一点,该函数将引用处理程序触发时事件已冒泡到的元素。(当您在输入字段中键入时,事件.目标

我对这件事感到很困惑。在普通CSS中,它似乎相当简单:

节{/*按预期重写*/
颜色:红色;
}
输入{
颜色:绿色;/*按预期效果*/
}
:非(输入){
颜色:蓝色;/*效果与预期一致*/
}

同侧眼睑


问题在于
按键向下
事件从
输入中弹出。如果使用
:not(input)
,则当事件刚刚在
input
元素初始化时,处理程序将不会启动,但当事件冒泡到
部分
元素时,它将启动。您可以通过检查函数内部的
this
来检查这一点,该函数将引用处理程序触发时事件已冒泡到的元素。(当您在输入字段中键入时,
事件.目标
将始终是
输入

jQuery(函数($){
$(document).on(“keydown”,“not(input)”,函数(事件){
//这将激发*所有*元素:-?
log(“事件处理程序#2 on”,this);
});
});

单击此处并键入


换句话说:使用白名单选择器,事件链从元素开始;使用黑名单选择器,它将跳过您的元素并开始向上一步。