1

也许它已经在这个网站的某个地方解决了,但我没有找到答案。也许这是因为我对 jQuery 还很陌生,并不知道是什么导致了这个问题。

所以我在我的 Wordpress 网站上添加了这段代码。我在这个网站上找到了原始代码,并尝试根据需要对其进行调整。

(function(){

    var j = 0;
    var delay = 2200; //millisecond delay between cycles

    jQuery.fn.rotateImg = function() {
        var list = jQuery(this);
        function cycleThru() {
            var jmax = list.length -1;
            jQuery(list.selector + ":eq(" + j + ")")
                .animate({"opacity" : "1"} ,800)
                .animate({"opacity" : "1"}, delay)
                .animate({"opacity" : "0"}, 800, function(){
                    (j == jmax) ? j=0 : j++;
                        cycleThru();
                });
        }
        cycleThru();

    };

    jQuery(document).ready(function() {
        jQuery(".test ul li, ul.logos li").rotateImg();
    });

})();

当我只用一个选择器调用它时它工作正常,但是当我添加第二个选择器时,不透明度会同时更改一个多个列表项(我认为它是列表项的一半)。我的第一个无序列表只有两个列表项,所以我猜这个错误与它有关。

顺便说一句,我很抱歉我的英语不好,谢谢你的帮助。

哦...我正在使用 jQuery 版本 1.7.2

编辑:我已经能够复制我的错误。你可以在这里看到它:http: //jsfiddle.net/selbh/5kDZn/18/

4

1 回答 1

0

新版本

http://jsfiddle.net/selbh/5kDZn/18/

(function($){

    var j = 0;
    var delay = 500; //millisecond delay between cycles


    $.fn.rotateImg = function() {

        $(this).each(function () {

            var list = $(this).find('li');
            function cycleThru() {
                var jmax = list.length -1;
                list.eq(j)
                    .animate({"opacity" : "1"} ,800)
                    .animate({"opacity" : "1"}, delay)
                    .animate({"opacity" : "0"}, 800, function(){
                        (j == jmax) ? j=0 : j++;
                            cycleThru();
                    });               
            }
            cycleThru();

        });



    };

    $(function() {
        $(".test ul, ul.logos").rotateImg();
    });


})(jQuery);​

旧版:

我不确定您要达到的目标。也许这就是你想要的:

http://jsfiddle.net/selbh/5kDZn/17/

(function($){

    var j = 0;
    var delay = 500; //millisecond delay between cycles


    $.fn.rotateImg = function() {

        var list = $(this);
        function cycleThru() {
            var jmax = list.length -1;
            list.eq(j)
                .animate({"opacity" : "1"} ,800)
                .animate({"opacity" : "1"}, delay)
                .animate({"opacity" : "0"}, 800, function(){
                    (j == jmax) ? j=0 : j++;
                        cycleThru();
                });               
        }
        cycleThru();

    };

    $(function () {
        $(".test ul li, ul.logos li").rotateImg();
    });



})(jQuery);​
于 2012-11-06T15:32:44.647 回答