作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道为了删除一个间隔,您需要一个对其的存储引用,所以我想我会将函数返回存储在全局数组中。但是为什么当我单击一个单元格时,间隔继续进行,只有一个停止(我看到第一个和最后一个单元格停止闪烁)?
我想要它做的是在表格行的所有单元格(不包括第一个单元格)上附加一个连续的 fadeTo,以及一个监听器,单击这些单元格中的任何一个都会停止所有单元格上的动画。
这是我迄今为止所做的最大努力( jsfiddle ):
var intervals;
var target = $('#table');
var qty = target.find('td:contains(Price)');
var row = qty.closest('tr');
arr = new Array();
row.find('td').each( function() {
if ($(this).text() !== "Price" ) {
intervals = new Array();
addAnimation($(this));
}
});
function addAnimation(cell) {
var intv = setInterval(function() {
cell.fadeTo("slow", 0.3);
cell.fadeTo("slow", 1);
}, 1000);
intervals.push(intv);
cell.click(function() {
for (var i = 0; i < intervals.length; intervals++) {
window.clearInterval(intervals[i]);
}
});
}
最佳答案
您多次实例化间隔数组并在 for 循环中增加错误的参数:
var intervals = [],
target = $('#table'),
qty = target.find('td:contains(Price)'),
row = qty.closest('tr');
row.find('td').each( function() {
if ($(this).text() !== "Price" ) {
addAnimation($(this));
}
});
function addAnimation(cell) {
var intv = setInterval(function() {
cell.fadeTo("slow", 0.3);
cell.fadeTo("slow", 1);
}, 1000);
intervals.push(intv);
cell.click(function() {
for (var i = 0; i < intervals.length; i++) {
window.clearInterval(intervals[i]);
}
$(this).stop();
});
}
参见:fiddle
关于javascript - 在这种情况下如何setInterval()和removeInterval()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989452/
我是一名优秀的程序员,十分优秀!