2012-11-09 96 views
31

Jqueryで要素を選択する際に問題があります。 私は要素を選択しようとすると:この返された結果を引き起こしている何jQueryのセレクタは、通常の要素の代わりにprevObjectを返します。

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

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

を私はこの結果を得ますか? 私はいくつかのことを試みましたが、依然として私が望む結果を得ることはできません。

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

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

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

私は、今のオブジェクトを返し しかし、私が望んでもいないのthatsます。

私はこのプロジェクトに飛び込んだので、私はこのスクリプトでよく知られていません。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> 
+0

あなたが見ている結果が返されたjQueryオブジェクトのプロパティです。あなたのHTMLのサンプルがなければ、あなたをさらに助けることは不可能です。 –

答えて

41

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

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

はのは、あなたのコードを分解してみましょう:最初の部分

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

から$(".htmlChunk")が - 彼らにクラスhtmlChunkを持つすべての要素にマッチし、それらの要素を含むjQueryオブジェクトを返します。

次に、あなたは<img>要素であることと、それらにクラスThumbを持つの基準を満たすすでにマッチした要素(クラスhtmlChunk持つもの)の子孫であるすべての要素を探している.find("img.Thumb")を呼び出します。することができます、あなたがそれらを含むむしろjQueryオブジェクトよりも、実際のDOM要素の配列をしたい場合は

var images = $(".htmlChunk img.Thumb"); 

あなたはあなたに良い結果を与えるかもしれない要素を取得するために、単一のセレクタを使用することができますHTML含めるために、質問に編集に対処するために

var elementArray = images.get(); 

.get()機能を使用

$(".htmlChunk")を使用して初期要素を取得しています。ただし、<div>要素は、htmlChunkIDであり、コードでは必要な要素が選択されません。あなたは以下を使用したいと思う:

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

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

+0

私はID(愚かな間違い私の悪い)のために実際に結果を得ましたが、私はまだprevObjectがどこから来て、なぜですか?通常、配列内のDOM要素を取得します。これは、奇妙なオブジェクトを返す前にこれを見たことがありません。あなたはこのオブジェクトを取り除きますか?例えば – Jacob

+1

やmabyのように見えますが、クロムは最近ブラウザで更新されていて、コンソールはもっと情報を表示していますので、前にしたことがあります。なぜ私は混乱していますか? – Jacob

3

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

var images = $("#htmlChunk").find("img.Thumb"); 
+0

ahh .. stupidおそらくその金曜日の間違いでしょう;) – Jacob

-1

これを試してください。

function getId() { 
      var ids = $(".htmlChunk").find("img.thumb"); //it wiill return array of image 
      var sid = $(".htmlChunk").find("img#img2"); //it wiill return wat image you want 
      $(".htmlChunk span").text("arrays:" + ids[0] + " : " + ids[1] + 
      "simple imge:" + sid); 
     } 


    <input id="Button1" type="button" value="button" onclick= "getId();"/> 


    <div class="htmlChunk"> 
     <img alt="" src="img/Desert.jpg" class="thumb" id="img1" /> 
     <img alt="" src="img/Chrysanthemum.jpg" class="thumb" id="img2" /> 
     <span></span> 
    </div> 
-2

は結果のプロパティですか?

「結果は以下のprevObjectを持っている - >」として、あなたはそれを理解することができ

関連する問題