1

在插件上,我有以下内容:

var defaults = {
    hide: function ($element, $tooltip) {
        $tooltip.fadeOut(4000);
    }
};
$(this).each(function (e) {
    $this.mouseleave(function (e) {
        tooltip.timer = setTimeout(function () {
            options.hide($this, $("." + options.class).stop(true, true), function () {
                $("." + options.class).remove(); // THE ELEMENT IS NOT BEING REMOVED
            });
        }, 0);
    }), // Mouse leave  
})

在鼠标离开时,我试图在动画结束后删除元素。

问题是该元素没有被删除。但如果我使用它,它会起作用:

$this.mouseleave(function (e) {
    tooltip.timer = setTimeout(function () {
        options.hide($this, $("." + options.class).stop(true, true));
        $("." + options.class).remove(); // THE ELEMENT IS BEING REMOVED
    }, 0);
}), // Mouse leave

然后一切正常...为什么 function() { ... } 禁用删除操作?

4

2 回答 2

1

您不能以这种方式传递第三个参数(回调)。试试这个:

var defaults = {
    hide: function ($element, $tooltip, $func) {
        if(typeof $func === 'function');
            $tooltip.fadeOut(4000, 'swing', $func);
        else
            $tooltip.fadeOut(4000);
    }
};

$(this).each(function (e) {
    $this.mouseleave(function (e) {
        tooltip.timer = setTimeout(function () {
            options.hide($this, $("." + options.class).stop(true, true), function () {
                $("." + options.class).remove(); // THE ELEMENT IS NOT BEING REMOVED
            });
        }, 0);
    }), // Mouse leave  
})

编辑:

JSFiddle 上的演示:http: //jsfiddle.net/wcX3g/

于 2013-04-23T21:11:47.260 回答
0

我认为你指的是不同this的,一个是$(this)到目前为止没有引用任何元素,然后你有$this里面$(this).each(),谁是 $(this)???,我认为你需要另一个选择器来为你的元素,比如 $('.班级名称')。然后在里面你可以为每个具有相同类名的元素使用 $(this):

$('.myClass').each(function (e) {
    $(this).mouseleave(function (e) {
        tooltip.timer = setTimeout(function () {
            options.hide($this, $("." + options.class).stop(true, true), function () {
                $("." + options.class).remove(); 
            });
        }, 0);
    }),  
})

也许您可以使用 Jquery 悬停:

$(this).hover(function(){
    //on mouse over
}, function(){
    //on mouse out
    $(the_elm_toRemove).remove();
});
于 2013-04-23T21:14:50.680 回答