如何为除了某个类之外的所有元素添加事件?

时间:2009-06-24 15:44:12

标签: javascript jquery html css

我想在页面上的所有元素上添加鼠标悬停事件,除了“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';
}

2 个答案:

答案 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);