我有以下悬停功能
function tt_attachToBase(){
jQuery.each(bases,
function(index,base){
jQuery(base).hover(function() {
jQuery(base).showTipTimer = setInterval( function(){tt_locateBase(base);} , 3000 );
},
function() {
clearInterval(jQuery(base).showTipTimer);
tt_hideTip();
}
});
}
);
在tt_locateBase()里面我也清除像这样的间隔
tt_locateBase(base){
clearInterval(jQuery(base).showTipTimer);
//code to sidplay tooltip
}
工具提示会在间隔后显示,但由于工具提示会在基础上重复出现,所以它似乎永远不会被清除。我究竟做错了什么?
答案 0 :(得分:2)
将属性设置为jQuery(base)
的返回值只会影响该特定对象。如果您第二次获取jQuery(base)
,则不会携带该属性。
您目前正在做的事情等同于以下代码:
function return_something() {
return ['foo', 'bar'];
}
var first_fetch = return_something();
// => ['foo', 'bar']
first_fetch.push('baz'); // => ['foo', 'bar', 'baz']
var second_fetch = return_something(); // => ['foo, 'bar']
或许将其作为a data field附加?这样,它将影响DOM中的实际对象,jQuery对象将在后续提取中携带该数据值。
jQuery(base).data('showTipTimer',
setInterval(function(){tt_locateBase(base);} , 3000));
然后清楚:
clearInterval(jQuery(base).data('showTipTimer'));
答案 1 :(得分:0)
jQuery(base).hover(function() {
var idInterval = setInterval( function(){tt_locateBase(base, idInterval);} , 3000 );
},
然后
tt_locateBase(base, i){
clearInterval(i);
//code to sidplay tooltip
}