2

私はimgsを集めています:

container.find('img')

ログによると、これは(console.log('img' + imgs [0]))

[オブジェクトHTMLImageElement]

しかし、each()でこのリストを反復処理すると、次のようになります。

            container.find('img').each(function(idx) {
                var curr = $(this);
                                    console.log('curr ' + curr);

        });

私は得ています:

[オブジェクトオブジェクト]

私はそれが配列内の存在をチェックするという私の厄介な問題の理由だと思います:

        if (! jQuery.inArray(curr, hiddenImgs)) {
              hiddenImgs.push(curr);
            }

そして、要素が配列に含まれていないことを確信していても、FALSEを取得しています:/

それはクレイジーです。誰か助けてもらえますか?

4

3 に答える 3

3

まず、有用なログ結果を取得するには、文字列に変換するのではなく、直接ログに記録します。

例:

console.log( imgs[0] );
console.log( curr );

次に、最初のケースではImage要素をログに記録し、2番目のケースではjQueryオブジェクトをログに記録しています。

$(this) //<-- return a jQuery object wrapping `this`, the original element is in $(this)[0]
this //<-- plain this, it's the dom element itself. I.E. HTMLImageElement
于 2012-07-28T15:43:36.533 に答える
1

関数を呼び出したときに、image要素を参照する新しいjQueryオブジェクトを作成し、jqueryオブジェクトのタイプがHTMLImageElementではなくオブジェクトあるため、[ objectObject]を取得しています。jQuery(セレクター[、コンテキスト])を参照してください$(this)

一致するものが見つからない場合、関数は0ではなく-1inArray返すため、コードを次のように変更する必要があります。

if (jQuery.inArray(curr, hiddenImgs) == -1) {
              hiddenImgs.push(curr);
            }

jQuery.inArray()を参照してください

于 2012-07-28T15:44:29.543 に答える
0

試して.each()みてください:

console.log('curr ' + curr.get(0));

于 2012-07-28T15:46:14.660 に答える