1

これはjavascriptでの私の状況です:

EA = {
    DOMElement: $('#example img'),
    photos: '',
    ...

    countSelected: function(){
        var len = 0;
        var id = '';

        EA.DOMElement.each(function(index){
            id = $(this).attr('data-id');
            EA.photos += id + ",";
        });

        len = EA.photos.length;
        return len;
    },   
}

関数 countSelected は 0 を返しますが、このソリューションを使用するとすべて正常に動作します。

    countSelected: function(){
        var len = 0;
        var id = '';

        $('#example img').each(function(index){
            id = $(this).attr('data-id');
            EA.photos += id + ",";
        });

        len = EA.photos.length;
        return len;
    },   

私の意見では、問題はセレクターにあります: $(this)。解決策をご存知ですか?

ありがとう!

4

1 に答える 1

2

問題は、名前空間をいつ初期化したかです。DOM が完全に準備される前にそうした場合、および/または画像が後でその#example要素の下に追加された場合、jQuery 参照は古くなっています。

いくつかのオプションがあります。1 つは後で初期化することです。もう 1 つは、毎回 jQuery 呼び出しを使用することです (2 番目のコード スニペットのように)。もう 1 つは、必要なときにいつでも jQuery コンストラクターを呼び出す関数を名前空間に作成することです (これにより、少なくともセレクターの重複を減らすことができます)。

于 2012-08-30T16:10:56.047 に答える