0

在玩弄了 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>
4

2 回答 2

2

这是因为你的函数是如何作用域的——给它分配一个像这样的变量:

var randImgs = function() {
  // do stuff
}

现在您的 setInterval 引用了正确的函数。

快速说明:div#slideshow(或任何标签/ID 组合)效率不高。ID 仅适用于该元素,因此不需要说“查看所有 div 并找到...的 id”。

但是,对 div.myClassName 等类使用这种方法 - 说“查看所有 div 并找到类......”。

父母/孩子也是如此 - #parent #child - 是额外的工作 - #child 可以自己找到。但是,#parent div.myClassName 是明智的,因为这有助于缩小对类名为 myClassname 的 div 的搜索范围。

于 2010-06-09T19:08:41.587 回答
0

啊哈!我继承了这个网站,似乎该网站的原始创建者在标题中调用了大约 3 或 4 个不同的 js 库(scriptalicious、prototype...)。但实际上它们都没有被使用。我把所有这些东西都拿出来了,现在它工作得很好,所以问题出在 jQuery 和其他库之一之间的交互上。无论如何,感谢 Dan Heberden 的时间和建议!

于 2010-06-09T21:26:39.567 回答