繁体   English   中英

删除onmouseover和onmouseout上的属性

[英]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_11row-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM