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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 地址在回调中不起作用

属性!='value' jquery 选择在 IE 中不起作用

为啥 Jquery 加载在 Firefox 中不起作用?

jQuery 就绪功能在 WordPress 中不起作用

jquery验证在IE8中不起作用

如果其他在 Jquery 中不起作用? [关闭]