Link setIntervals 与 .each() 元素
Link setIntervals with .each() element
这个问题与这个问题相关
我像这样在每个函数中使用 setIntervals,
var allIntervals = [];
$(".elements").each(function() {
var myInterval = setInterval(function() {
// code that changes $(this)
});
allIntervals.push(myInterval);
});
然后我像这样清除所有间隔
jQuery.each(allIntervals, function(index) {
window.clearInterval(allIntervals[index]);
});
我现在意识到我想清除 DOM 中不再存在的元素区间。
那么我如何link setIntervals 到每个() 元素,然后检查该元素是否仍在DOM 中,如果不在,则清除与该元素关联的Interval?
使用一个对象来存储信息(以元素和intervalid为属性),如果DOM元素不可用,循环对象并清除间隔。
$(function() {
var intervals = [];
$(".elements").each(function() {
var myInterval = setInterval(function() {
// code that changes $(this)
});
var obj = new Object();
obj.element = $(this);
obj.intervalId = myInterval;
intervals.push(obj);
});
$.each(intervals, function(index, val) {
console.log(val.element);
if (val.element.length > 0) {
window.clearInterval(val.intervalId);
}
});
});
您可以将具有超时 ID 的元素存储在一个对象中,但是您必须再次检查它是否在 DOM 中,因为存储的元素不会神奇地从变量中消失,它只是不再 DOM.
var allIntervals = [];
$(".elements").each(function(i, el) {
var myInterval = setInterval(function() {
// stuff
}, 1000);
allIntervals.push({id : myInterval, elem : this});
});
$.each(allIntervals, function(index, item) {
if ( $(document).find(item.elem).length === 0 ) window.clearInterval(item.id);
});
这个问题与这个问题相关
我像这样在每个函数中使用 setIntervals,
var allIntervals = [];
$(".elements").each(function() {
var myInterval = setInterval(function() {
// code that changes $(this)
});
allIntervals.push(myInterval);
});
然后我像这样清除所有间隔
jQuery.each(allIntervals, function(index) {
window.clearInterval(allIntervals[index]);
});
我现在意识到我想清除 DOM 中不再存在的元素区间。
那么我如何link setIntervals 到每个() 元素,然后检查该元素是否仍在DOM 中,如果不在,则清除与该元素关联的Interval?
使用一个对象来存储信息(以元素和intervalid为属性),如果DOM元素不可用,循环对象并清除间隔。
$(function() {
var intervals = [];
$(".elements").each(function() {
var myInterval = setInterval(function() {
// code that changes $(this)
});
var obj = new Object();
obj.element = $(this);
obj.intervalId = myInterval;
intervals.push(obj);
});
$.each(intervals, function(index, val) {
console.log(val.element);
if (val.element.length > 0) {
window.clearInterval(val.intervalId);
}
});
});
您可以将具有超时 ID 的元素存储在一个对象中,但是您必须再次检查它是否在 DOM 中,因为存储的元素不会神奇地从变量中消失,它只是不再 DOM.
var allIntervals = [];
$(".elements").each(function(i, el) {
var myInterval = setInterval(function() {
// stuff
}, 1000);
allIntervals.push({id : myInterval, elem : this});
});
$.each(allIntervals, function(index, item) {
if ( $(document).find(item.elem).length === 0 ) window.clearInterval(item.id);
});