1

以下は、アニメーション ナビゲーション スキーム用に私が書いた jQuery コードです。

次のようにテスト用に書き出すと、コードはうまく機能しました。

$("#about").click(function(e) {
                e.preventDefault();
                if ( !$(".current").hasClass("about") ){
                    $("body").css("overflow-x","hidden");
                    $(".current").animate({left:'-1500px'}, 500).slideUp(500);
                    $(".about").animate({left:'+3000px'}, 1).delay(500).slideDown();
                    $(".about").animate({left:'0px'}, 500, function(){
                            $(".current").removeClass("current");
                            $(".about").addClass("current");
                            $("body").css("overflow-x","visible");
                    });
                }
            });

しかし、ループに入れてjqueryセレクターで変数を使用しようとすると、機能しなくなりました。配列内の各文字列はsections、アンカー タグの ID とそれに対応する div 要素のクラスに対応します。

7行目まで実行されますが、 から始まる8行目と9行目$("."+sections[i])は動作しません。

var sections = ["about","photography","contact"];
for (var i=0; i<sections.length; i++) {
                $("#"+sections[i]).click(function(e) {
                    e.preventDefault();
                    if ( !$(".current").hasClass(sections[i]) ){
                        $("body").css("overflow-x","hidden");
                        $(".current").animate({left:'-1500px'}, 500).slideUp(500);
                        $("."+sections[i]).animate({left:'+3000px'}, 1).delay(500).slideDown();
                        $("."+sections[i]).animate({left:'0px'}, 500, function(){
                                $(".current").removeClass("current");
                                $("."+sections[i]).addClass("current");
                                $("body").css("overflow-x","visible");
                        });
                    }
                });

            }

console.log( $("."+sections[i]).attr("class") )未定義になります。問題はセレクターにあると思いますが、それが何であるかわかりません。クラスセレクターではなく、IDセレクターが正常に機能しているようです。どんな提案でも大歓迎です!

4

1 に答える 1