褪色后去除元素

时间:2013-04-23 21:01:28

标签: javascript jquery

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

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(){...}禁用删除操作?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

我认为你引用了不同的this,其中一个$(this)到目前为止没有引用任何元素,然后你$this$(this).each(),谁是$('.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); }), }) $(this)???,我认为你的元素需要另一个选择器,比如$('。className')。然后在里面,您可以为具有相同className的每个元素使用$(this):

$(this).hover(function(){
    //on mouse over
}, function(){
    //on mouse out
    $(the_elm_toRemove).remove();
});

也许你可以使用Jquery悬停:

{{1}}