[英]Remove Attributes onmouseover and onmouseout
我正在尝试使用JQuery的remove属性,如下所示:
$('#rom-img_1').removeAttr('mouseover');
$('#rom-img_2').removeAttr('mouseout');
但是,它不会消除事件的影响,因为鼠标悬停和鼠标移动时仍会触发事件。 我曾尝试在事件名称之前添加“on”但JQuery不会像这样使用它。
为什么这不起作用,如何删除这些属性。
这有点像HTML:
<div onmouseout="$('#heart_401').css({'display':'none'});" onmouseover="$('#heart_401').css({'display':'block'});" id="row-img_11"></div>
谢谢大家的帮助
永远不要使用html代码中的onsomething来注册事件处理程序。 它使您的标记可读性降低并导致各种问题(例如this
不指向元素)。
始终使用$(...).mouseover(function() { /* yourcode */ })
或$(...).bind('mouseover', function() { /* yourcode */ })
。
然后,您可以使用$(...).unbind('mouseover')
轻松删除该句柄。
当然,您也可以使用其他处理程序,如点击或焦点而不是鼠标悬停 。
removeAttr不起作用的原因是处理程序不是属性。 在内部,它们被转换为处理程序,因此您无法通过删除属性来删除它们。 但是,这可能有效:
$('#rom-img_1')[0].mouseover = function() {};
$('#rom-img_1')[0].mouseout = function() {};
$('#rom-img_1')
你row-img_11
了row-img_11
。 jQuery没有错误,只是得到一个没有匹配的选择器结果。
虽然你通常希望避免使用像这样的内联事件处理程序属性,但onmouseover
removeAttr
对我来说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');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.