-1

私は次のコードを持っています:

$(".zalen").change(function(){
        var number = $(this).val(); 
        $('.Zaal').load('zaal'+ number +'.html');

        var storageName = "zaal" + $(".zalen").val() + '_chairs';
        var chairs = localStorage.getItem(storageName);
        if(chairs == null)
        {
            chairs = "";
        }
        var chairArray = chairs.split(" "); 
        alert(chairArray);
        $("td.chair").each(function(index){
            for(var i=0; i < chairArray.length; i++)
            {
                if(index == chairArray[i])
                {
                    $(this).addClass('reserved');   
                }
            }
        })
    });

椅子を分割した後のアラートに注意してください。

アラートと完全に連携します。しかし、私はテストを終了し、アラートを削除しました。コードが機能しなくなったのですが、なぜそうなるのかわかりません。

誰かがこの問題で私を助けることができますか?

解決 :

$(".zalen").change(function(){
        var number = $(this).val(); 
        $('.Zaal').load('zaal'+ number +'.html', function() {
            var storageName = "zaal" + $(".zalen").val() + '_chairs';
            var chairs = localStorage.getItem(storageName);
            if(chairs == null)
            {
                chairs = "";
            }
            var chairArray = chairs.split(" ");  
            $("td.chair").each(function(index){
                for(var i=0; i < chairArray.length; i++)
                {
                    if(index == chairArray[i])
                    {
                        $(this).addClass('reserved');   
                    }
                }
            })
        });
    });

あなたの解決策をありがとう@jbabey。Iamはとても感謝しています

4

1 に答える 1

4

jqueryのload()関数は、コンテンツの非同期リクエストを実行します。そのコンテンツの準備ができるまで待ってから、それに基づいて行動する必要があります。アラートが発生すると、コードは終了するのに十分な時間一時停止されましloadた。ロードされるコンテンツに依存するコードは.Zaal、ロードの成功ハンドラーに含まれている必要があります。

$(".zalen").change(function(){
    var number = $(this).val(); 
    $('.Zaal').load('zaal'+ number +'.html', function () {
        // put all of this in the complete callback
        var storageName = "zaal" + $(".zalen").val() + '_chairs';
        var chairs = localStorage.getItem(storageName);
        if(chairs == null) {
            chairs = "";
        }
        var chairArray = chairs.split(" "); 
        alert(chairArray);
        $("td.chair").each(function(index){
            for(var i=0; i < chairArray.length; i++) {
                if(index == chairArray[i]) {
                    $(this).addClass('reserved');   
                }
            }
        })
    });
});
于 2012-10-10T13:14:39.823 に答える