2

jqueryを使ってスライドダウンメニューを作っています。コードは、ページが初めて読み込まれたときに完全に機能します。ただし、slideDown (クリック機能の重要な部分) は、メニュー項目ごとに 1 回しか機能しません。これはjsフィドルの例http://jsfiddle.net/74ser/です。どんな助けでも大歓迎です。

$(document).ready(function() {
        $('.options').live('click',function() {
            console.log(this);
            var current = this.innerHTML;
            var list = listOfeverythingBut ("options", this);
            console.log(list);
            var stringA = new Array() ;
            var stringUl = new Array();
            for (var i =0; i < list.length; i++){
                var item ="."+list[i].innerHTML+"Menu";
                if ( $(item).length === 1){
                     stringA.push("ul"+ item ); 
                     stringUl.push(item + " a"); 
                }
            }
            stringA = stringA.toString();
            stringUl = stringUl.toString();
            console.log(stringA); 
            console.log(stringUl); 
            var currentItem = "." + current + "Menu";
            console.log(currentItem);
            if ( $(currentItem).length === 1){
                console.log("inOf"); 
                var toSlideDown = 'UL' + currentItem;
                console.log(toSlideDown); 
                console.log($(toSlideDown));
                $(toSlideDown).slideDown('medium');

            }
            else {
                $(".bottom").slideUp(20);
                $('.homeContent').delay(30).fadeIn(30);
            }           
            $(stringUl).slideUp('medium');
             moveDiv(this);
            $(stringA).removeClass('press');

            $('.options').removeClass('largeMenuStyle');
            $(this).addClass('largeMenuStyle');

            //setTimeout( function(){moveDiv(this)}, 2000); 
        });
});

注: 重要なコードはif ( $(currentItem).length === 1). コードを実行するたびに console.logs 'inOf' になるため、if に入ることがわかります。正しい 'toSlideDown' 変数があっても、一度しか機能しません。

これらのフォーラムのトピックについては既に言及しましたが、まだ答えが見つかりません。

Jquery はページの読み込みごとに 1 回しか機能しません - ページをリロードせずに複数回機能させたい

JQuery クリック イベントは 1 回だけ機能します

4

2 に答える 2

0

申し訳ありませんが、あなたのコードは非常にトリッキーで、HTML 構造が非常に間違っています。

私のホットフィックスを試してみてください: http://jsfiddle.net/jvLJs/1/

 $(toSlideDown + ' a').show();
 $(toSlideDown).hide().slideDown('medium');
于 2013-01-10T15:12:49.887 に答える