将 .attr 放入另一个方法的函数中会中断 jquery
Putting .attr inside a function of another method breaks jquery
下面我贴了一个JSfiddle。我正在尝试使用 for 循环和数组列表来更改 Jquery 中的图像。出于某种原因,当我只将它放入时,这段代码工作得很好:
menuimage.delay(500).attr('src', cars[i]);
但是当我把
menuimage.delay(2000).toggleClass('nopacity', 1000, function(){
menuimage.delay(500).attr('src', cars[i]);
});
menuimage.delay(500).toggleClass('nopacity', 1000);
图像变化似乎中断了。我不确定为什么会这样。下面我发布了它的 JSfiddle。我已经得到了较低的代码来更改我想要正确的图像,当它在阵列外部时,但在内部它拒绝工作,同时在此功能中设置关闭另一个设置。任何帮助和解释将不胜感激。
有额外代码
https://jsfiddle.net/nathanahartmann/hnkokka8/3/
无需额外代码
使用 setInterval
而不是 for 循环,并且要知道有一个 toggleClass Callback 你需要像 .promise().done(function(){});
一样使用它
jQuery 具有承诺方法,returns 一个您可以使用 .promise()
访问的延迟对象。在选定元素上的所有 运行 动画完成后,将解析此承诺对象。到那时,您可以绑定到它的完成方法。
$("document").ready(function(){
var menuimage=$("#menuImage")
var cars = ['http://www.freedigitalphotos.net/images/img/homepage/87357.jpg', 'http://i164.photobucket.com/albums/u8/hemi1hemi/COLOR/COL9-6.jpg'];
var i = 0;
setInterval(function(){
menuimage.delay(2000).toggleClass('nopacity', 1000).promise().done(function(){
menuimage.delay(500).attr('src', cars[i]);
});
menuimage.delay(500).toggleClass('nopacity', 1000);
i ++;
i = i % 2;
}, 5000)
})
下面我贴了一个JSfiddle。我正在尝试使用 for 循环和数组列表来更改 Jquery 中的图像。出于某种原因,当我只将它放入时,这段代码工作得很好:
menuimage.delay(500).attr('src', cars[i]);
但是当我把
menuimage.delay(2000).toggleClass('nopacity', 1000, function(){
menuimage.delay(500).attr('src', cars[i]);
});
menuimage.delay(500).toggleClass('nopacity', 1000);
图像变化似乎中断了。我不确定为什么会这样。下面我发布了它的 JSfiddle。我已经得到了较低的代码来更改我想要正确的图像,当它在阵列外部时,但在内部它拒绝工作,同时在此功能中设置关闭另一个设置。任何帮助和解释将不胜感激。
有额外代码
https://jsfiddle.net/nathanahartmann/hnkokka8/3/
无需额外代码
使用 setInterval
而不是 for 循环,并且要知道有一个 toggleClass Callback 你需要像 .promise().done(function(){});
jQuery 具有承诺方法,returns 一个您可以使用 .promise()
访问的延迟对象。在选定元素上的所有 运行 动画完成后,将解析此承诺对象。到那时,您可以绑定到它的完成方法。
$("document").ready(function(){
var menuimage=$("#menuImage")
var cars = ['http://www.freedigitalphotos.net/images/img/homepage/87357.jpg', 'http://i164.photobucket.com/albums/u8/hemi1hemi/COLOR/COL9-6.jpg'];
var i = 0;
setInterval(function(){
menuimage.delay(2000).toggleClass('nopacity', 1000).promise().done(function(){
menuimage.delay(500).attr('src', cars[i]);
});
menuimage.delay(500).toggleClass('nopacity', 1000);
i ++;
i = i % 2;
}, 5000)
})