5

我这样做:

$.each($('img'), function () {
    this.unbind('onmouseover');
});

这不起作用。为什么?

4

2 回答 2

10

尝试如下,

$('img').unbind('mouseover');

不需要循环..也不mouseover应该onmouseover

假设:您正在使用.bind绑定mouseover处理程序

我没有使用绑定。有些图像有 onmouseover 属性,我想删除它们。我尝试了 $('img').removeAttr('onmouseover') 但它仍然不起作用

  1. 使用内联事件处理程序不是标准。
  2. 由于您使用的是 jQuery,因此您应该像下面这样绑定处理程序。

代码:

$('img').on('mouseover', function () {
     //Your code
});

稍后可以使用.off->取消绑定它们

$('img').off('mouseover');

解决您所拥有的(不是首选),(参考

$.each($('img'), function () {
    $(this).removeAttr('onmouseover');
});
于 2012-05-24T14:41:59.030 回答
6
  • $.each()jQuery 元素集合已经有一个内部的each().

  • 此外,您可以“菊花链”删除 jQuery 中的处理程序方法,因为每个函数都返回相同的集合。每个附加方法都有自己的删除方法对,因此请相应地使用。

  • 最后,要移除 DOM 元素上的处理程序(内联事件处理程序),请将其替换为 null 或执行以下操作的函数return false

这是概念代码:

$('img')
    .unbind('mouseover')               //remove events attached with bind
    .off('mouseover')                  //remove events attached with on
    .die('mouseover');                 //remove events attached with live
    .each(function(i,el){              //and for each element
        el.onmouseover = null          //replace the onmouseover event
    });
于 2012-05-24T14:42:35.270 回答