在使用jquery幻灯片扩展程序玩弄后,我创建了自己的更适合我的目的(我不喜欢在开头加载所需的所有图像)。现在,升级到jQuery 1.4.2(我知道我已经迟到了),幻灯片显示加载第一张图片(从行$('div#slideshow img#ssone').fadeIn(1500);
到底部),但除此之外没有做任何事情。有谁知道哪个jquery构造正在杀死我的脚本?实时页面位于lplonline.org,暂时使用1.3.2。提前谢谢。
Array.prototype.random = function( r ) {
var i = 0, l = this.length;
if( !r ) { r = this.length; }
else if( r > 0 ) { r = r % l; }
else { i = r; r = l + r % l; }
return this[ Math.floor( r * Math.random() - i ) ];
};
jQuery(function($){
var imgArr = new Array();
imgArr[1] = "wp-content/uploads/rotator/Brbrshop4-hrmnywkshp72006.jpg";
imgArr[2] = "wp-content/uploads/rotator/IMGA0125.JPG";
//etc, etc, about 30 of these are created dynamically from a db
var randImgs = function () {
var randImg = imgArr.random();
var img1 = $('div#slideshow img#ssone');
var img2 = $('div#slideshow img#sstwo');
if(img1.is(':visible') ) {
img2.fadeIn(1500);
img1.fadeOut(1500,function() {
img1.attr({src : randImg});
});
} else {
img1.fadeIn(1500);
img2.fadeOut(1500,function() {
img2.attr({src : randImg});
});
}
}
setInterval(randImgs,9000); // 9 SECONDS
$('div#slideshow img#ssone').fadeIn(1500);
});
</script>
<div id="slideshow">
<img id="ssone" style="display:none;" src="wp-content/uploads/rotator/quote-investments.png" alt="" />
<img id="sstwo" style="display:none;" src="wp-content/uploads/rotator/quote-drugs.png" alt="" />
</div>
答案 0 :(得分:2)
这是因为你的函数是如何作用域的 - 给它分配一个这样的变量:
var randImgs = function() {
// do stuff
}
现在你的setInterval引用了正确的函数。
快速说明:div#slideshow(或任何tag / id组合)效率不高。 ID只适用于该元素,所以说“查看所有div并找到...的ID”是不必要的。
然而,使用这种方法,例如div.myClassName这样的类 - 来说'查看所有的div并查找类......'。
与父母/子女一样 - #parent #child - 是额外的工作 - #child可以自己找到。 #parent div.myClassName然而是明智的,因为这有助于缩小对类名为myClassname的div的搜索范围。
答案 1 :(得分:0)
啊哈!我继承了这个网站,似乎网站的原始创建者在标题中调用了大约3或4个不同的js库(scriptalicious,prototype ...)。但实际上并没有使用它们。我把所有这些内容都拿出来了,现在它工作得非常漂亮,所以问题在某种程度上是jQuery和其他一个库之间的交互。无论如何,谢谢Dan Heberden的时间和建议!