2012-11-09 89 views
31

我用jquery選擇元素有一些問題。 當我嘗試選擇一個元素:jQuery選擇器返回prevObject而不是普通元素

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> 
+0

你看到的結果是返回jQuery對象的屬性。沒有你的HTML樣本,你不可能進一步提供幫助。 –

回答

41

images變量是一個jQuery對象,所以你看到的在瀏覽器的控制檯輸出似乎是對象。具體的輸出表明,調用.find()實際上並不匹配任何元素;比較this jsFiddle(在Chrome中)的兩個控制檯輸出。

當調用一個jQuery函數 - 諸如.find().filter()等等 - 對變窄,或者變化,匹配元素的對列表中的現有jQuery對象所得jQuery對象還包含功能之前的狀態的參考被運行,這就是你所看到的prevObject。這是當你調用.end()函數時用來恢復的東西。

讓我們打破你的代碼:

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

第一部分 - $(".htmlChunk") - 有類htmlChunk對他們的所有元素相匹配,並返回包含這些元素一個jQuery對象。

然後調用.find("img.Thumb")看起來爲是滿足的作爲一個<img>元件和具有在其上的類Thumb標準的已匹配的元素(那些與類htmlChunk)的後代的所有元素。

你可以使用一個單一的選擇來獲取元素,這可能會給你更好的結果:如果你想實際的DOM元素的數組,而不是一個jQuery對象包含它們

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

,你可以使用.get()功能:

var elementArray = images.get(); 

爲了解決編輯的問題,包括在HTML:

您正在使用$(".htmlChunk")來獲取初始元素。但是,該<div>元素有一個ID,而不是類,htmlChunk,以便代碼不會選擇您需要的元素。你要使用以下命令:

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

注意#而不是選擇的.

+0

現在我確實得到了結果,因爲ID(愚蠢的錯誤我不好),但我仍然不知道prevObject來自哪裏,爲什麼?通常你得到一個數組中的DOM元素,在它返回一個奇怪的對象之前從來沒有見過這個元素。只是爲了澄清事情你怎麼擺脫這個對象,例如 – Jacob

+1

或maby它看起來不同,因爲鉻更新瀏覽器最近和控制檯顯示更多信息現在然後它做了之前,所以這就是馬比爲什麼我很困惑 – Jacob

3

它看起來像你試圖選擇類「.htmlChunk」,但不存在。嘗試通過ID選擇。

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

aahh .. 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只是結果的屬性?

,你可以把它理解爲「結果有以下prevObject - >」

相關問題