Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除onmouseover和onmouseout属性_Javascript_Jquery - Fatal编程技术网

Javascript 删除onmouseover和onmouseout属性

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'

我尝试使用JQuery的remove属性,如下所示:

$('#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,请执行以下操作:

$("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');