mouseleave 在 jquery 中不起作用
Posted
技术标签:
【中文标题】mouseleave 在 jquery 中不起作用【英文标题】:mouseleave not working in jquery 【发布时间】:2012-10-31 13:57:50 【问题描述】:我的 mouseleave 在我的 jquery 代码中不起作用
http://jsfiddle.net/alano/9Dr7T/29/
在下面提供我的 js 代码
mouseleave: function ()
$(this).find("div:last").remove();
【问题讨论】:
您的mouseleave
侦听器的预期行为是什么?针对哪些元素?
用 200 行代码对一个问题进行了很好的描述?
@mmmshuddup:在添加图像操作之后...对于该特定 img 标签,鼠标悬停时,添加图像按钮不应再出现...
@adeneo@mmmshuddup:你们明白了吗
是的,我现在知道了。这很奇怪。
【参考方案1】:
问题不在于mouseleave
侦听器,问题在于如何绑定这些事件处理程序并解除绑定它们。 div 已被删除,但每个 mouseenter
事件都会读取它。由于某种原因,当使用.on()
的选择器 过滤器时,mouseenter 事件没有被解除绑定。大概和bubbling occurs when using the selector filter的方式有关吧。
当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。 jQuery 将事件从事件目标冒泡到附加处理程序的元素(即从最内到最外的元素),并为匹配选择器的路径上的任何元素运行处理程序。
现在,我还不能 100% 确定为什么,但无论哪种方式,如果您使用这样的直接绑定处理程序,它都会起作用:
$('.specialHover').on(
mouseenter: function()
$("<div class='cta'>add image</div>").click(function()
var $me = $(this);
$me.parent().unbind('mouseenter').children('img').attr(
'src',
'http://www.onlinegrocerystore.co.uk/images/goodfood.jpg'
);
$me.remove();
).appendTo(this);
,
mouseleave: function()
$(this).find('div:last').remove();
);
见:http://jsfiddle.net/9Dr7T/35/
【讨论】:
非常感谢......你能给你的skype或gmail id吗......我不明白你的解释......所以我可以直接打电话给你【参考方案2】:你试过这种方式吗:
mouseleave: function ()
$("div:last",this).remove();
【讨论】:
你能否更具体地说明它应该在你的小提琴中删除什么,可能是我没有正确理解它。以上是关于mouseleave 在 jquery 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章