我想在页面上的所有元素上添加鼠标悬停事件,除了“no_inspect”类,
我想在加载所有页面元素后添加此事件,我试着像这样写:
$('*:not(.no_inspect)').mouseover(MouseOverEvent);
但它不起作用,接缝错过了。
更新不工作意味着:
该事件附加到页面上的所有元素“有no_inspect类或没有”,这不是我想要的行为。
更新 MouseOverEvent代码:
function DIOnMouseOver(evt) {
element = evt.target;
// set the border around the element
element.style.borderWidth = '2px';
element.style.borderStyle = 'solid';
element.style.borderColor = '#f00';
}
答案 0 :(得分:2)
mouseover
事件泡沫。请尝试 mouseenter
。
另外,为什么要将样式应用于 evt.target
?为什么不'这个'?
function DIOnMouseOver(evt) {
$(this).css({
border: '2px solid #f00'
});
}
正如Matchu所述(在评论中),另一种避免传播的方法是在事件处理程序中调用 event.stopPropagation()
。
答案 1 :(得分:0)
您发布的代码应该有效,您确定鼠标悬停事件没有针对包裹您正在鼠标悬停的元素触发吗?
您使用的是最新版本的JQuery吗?我知道旧版本在not选择器中有某种类错误。
您可能想尝试
$('*').not('.no_inspect').mouseover(MouseOverEvent);