Javascript 删除onmouseover和onmouseout属性
我尝试使用JQuery的remove属性,如下所示:Javascript 删除onmouseover和onmouseout属性,javascript,jquery,Javascript,Jquery,我尝试使用JQuery的remove属性,如下所示: $('#rom-img_1').removeAttr('mouseover'); $('#rom-img_2').removeAttr('mouseout'); 但是,它不会消除事件的影响,因为事件仍然在mouseover和mouseout上触发。我也尝试过在事件名称之前添加“on”,但JQuery没有这样使用它 为什么这不起作用,如何删除这些属性 这是HTML的一部分: <div onmouseout="$('#heart_401'
$('#rom-img_1').removeAttr('mouseover');
$('#rom-img_2').removeAttr('mouseout');
但是,它不会消除事件的影响,因为事件仍然在mouseover和mouseout上触发。我也尝试过在事件名称之前添加“on”,但JQuery没有这样使用它
为什么这不起作用,如何删除这些属性
这是HTML的一部分:
<div onmouseout="$('#heart_401').css({'display':'none'});" onmouseover="$('#heart_401').css({'display':'block'});" id="row-img_11"></div>
感谢所有人的帮助切勿在html代码中使用onsomething注册事件处理程序。它会降低标记的可读性,并导致各种问题(例如,
此
不指向元素)
始终使用$(…).mouseover(function(){/*yourcode*/})
或$(…).bind('mouseover',function(){/*yourcode*/})
注册它们
然后您可以使用$(…).unbind('mouseover')
轻松地卸下把手
当然,您也可以使用其他处理程序,如单击或焦点,而不是鼠标悬停
removeAttr不起作用的原因是处理程序不是属性。在内部,它们被转换为处理程序,因此不能通过删除属性来删除它们。
但是,这可能会起作用:
$('#rom-img_1')[0].mouseover = function() {};
$('#rom-img_1')[0].mouseout = function() {};
您拼写错误了row-img\u 11
。jQuery不会出错,您只会得到一个没有匹配项的选择器结果
尽管您通常希望避免使用像这样的内联事件处理程序属性,但mouseover的
removeAttr
对我来说是一种修复方法。要在jQuery中获取和设置mouseover和mouseout事件,请使用.mouseover()
和.mouseout()
。语法如下:
设置(在这种情况下删除):
$("#row-img_11").mouseover("");
$("#row-img_11").mouseout("");
$("div:contains('row-img')").each(function() {
$(this).mouseover("");
$(this).mouseout("");
});
如果你把id拼对了,它就可以正常工作了:
$('#row-img_11').removeAttr('onmouseover').removeAttr('onmouseout');
一旦浏览器解析它们,它们就是事件处理程序,可能仍然是属性,这取决于浏览器…首先插入它们不是一个选项吗?当我使用firebug删除属性时,事件似乎不再被触发,这是由于firebug造成的还是应用remove属性时会发生什么?div是动态生成的,我不知道元素的id。此外,这是一个小项目。我只是需要它工作!:)我认为这些是属性,即onmouseout:事实上,你是对的,有一个拼写错误,但不是我输入的额外的一个,而是“rom”而不是“row”!该死的!我不知道为什么有人批评你,但这是正确的答案。
$('#row-img_11').removeAttr('onmouseover').removeAttr('onmouseout');