web-dev-qa-db-ja.com

jQueryセレクターは通常の要素ではなくprevObjectを返します

Jqueryで、要素の選択に問題があります。要素を選択しようとすると:

var images = $("#htmlChunk").find("img.Thumb");
console.log(images);

私はこの結果を得ます:

>[<img>, <img>, prevObject: e.fn.e.init[1], context: #document, selector: "#htmlChunk img.Thumb"]

この返された結果の原因は何ですか?いくつか試してみましたが、それでも期待した結果が得られませんでした。

競合を避けるためにコードをラップしようとしました。オブジェクトをクリアしようとしました

これはウェブで見つけたものです。 http://drupal.org/node/272557

var images = $("#htmlChunk")['prevObject'].find("img.Thumb");

私は今オブジェクトを返しますが、それも私が望んでいたものではありません。

私はこのプロジェクトに飛び込んだので、スクリプトについてはあまり知られていない。 jsファイルでprevObjectを検索しようとしましたが、見つかりませんでした。

問題は、他のjavascriptファイルを妨害していることだと思います。何か案は?行き方?

編集:htmlChunk:

<div id="htmlChunk">
    <div class="ngg-albumoverview">
        <div class="ngg-album-compact">
            <div class="ngg-album-compactbox">
                <div class="ngg-album-link">
                    <a class="Link" href="http://........">
                        <img class="Thumb" alt="Personeelsevent" src="http://.........">
                    </a>
                </div>
            </div>
            <h4><a class="ngg-album-desc" title="Personeelsevent" href="http://.....">Personeelsevent</a></h4>
            <p><a href="http:///.......">bekijk dit album</a></p>
        </div>
    </div>
</div>
32
Jacob

images変数はjQueryオブジェクトであるため、ブラウザーのコンソールに表示されるのはそのオブジェクトのようです。特定の出力は、.find()の呼び出しが実際にどの要素とも一致していないことを示しています。 this jsFiddle (Chrome)からの2つのコンソール出力を比較します。

.find().filter()などの絞り込みまたは変更するjQuery関数を呼び出すと、結果のjQueryオブジェクトに含まれる既存のjQueryオブジェクトの一致した要素のリストその関数が実行される前の状態への参照。これはprevObjectとして表示されます。これは、 .end() 関数を呼び出すときに戻るために使用するものです。

コードを分解しましょう:

_var images = $(".htmlChunk").find("img.Thumb");
_

最初の部分-$(".htmlChunk")-は、クラスhtmlChunkを持つすべての要素に一致し、それらの要素を含むjQueryオブジェクトを返します。

次に、.find("img.Thumb")を呼び出します。これは、_<img>_要素であり、クラスhtmlChunkを持つという基準を満たす、既に一致した要素(クラスThumbを持つ要素)の子孫であるすべての要素を探します。 。

単一のセレクターを使用して要素を取得できます。これにより、より良い結果が得られる場合があります。

_var images = $(".htmlChunk img.Thumb");
_

それらを含むjQueryオブジェクトではなく、実際のDOM要素の配列が必要な場合は、 .get() 関数を使用できます。

_var elementArray = images.get();
_

HTMLを含めるように質問の編集に対処するには:

$(".htmlChunk")を使用して初期要素を取得しています。ただし、その_<div>_要素には、クラスではなくhtmlChunk[〜#〜] id [〜#〜]があるため、コードは必要な要素を選択しません。次を使用する必要があります。

_var images = $("#htmlChunk").find("img.Thumb");
_

セレクター内の_#_ではなく、_._に注意してください。

46
Anthony Grist

クラス ".htmlChunk"を選択しようとしているようですが、存在しません。代わりにIDで選択してみてください。

var images = $("#htmlChunk").find("img.Thumb");
3
anderssonola