在插件上,我有以下内容:
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(){...}禁用删除操作?
答案 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}}