2010-05-04 86 views
0

我正在使用jQuery選擇器來獲取頁面上所有CMS組件的值,使用$('div.cmscomponent'),但我如何測試這個以查看實際上是否獲取頁面上的組件列表。如何獲取jquery中的對象值和屬性?

我用:

var temp = $('div.cmscomponent'); 
alert(temp); 

和結果,我得到的是[Object對象]等我如何測試呢?以及如何獲取對象及其屬性的值。

回答

0

那麼這取決於你想知道什麼匹配的對象。一些例子:

var temp = $('div.cmscomponent'); 
alert(temp.length); // number of matched elements 

// Alert each id attribute of every matched element 
$(temp).each(function(index) { 
    alert(index + ': ' + $(this).attr("id")); 
}); 
0
var temp = $('div.cmscomponent').length; 
alert(temp); 
0

如果「我如何測試這個」,你的意思是?「我怎麼能寫這樣的單元測試」,得到的回答是,你不應該。你沒有寫jQuery,所以你應該認爲它已經被單元測試過了。 (如果有與jQuery的一個問題,但是,你可以寫集成測試會趕上這一點。)

在另一方面,如果你的意思是「我怎麼能理智檢查什麼的jQuery告訴我請確保我沒有穿上輸入?「,有幾種方法:

  • 檢查.length是否符合預期的項目數。
  • 檢查相同節點的XPath查詢("//div[@class='cmscomponent']")是否返回相同數量的值。
  • 檢查第N個節點的內容是否符合您的預期。

否則,它可能是最好使用第三方工具,如Firebug

1

$()返回一個jQuery包裝器對象,其內容通常是DOM元素列表以及適用於這些元素的屬性和方法。

如果你想獲得一個元素,你可以使用數組風格指數或get()方法訪問它們:

alert(temp[0].tagName);  // Fetch the first element, alert the `tagName` 
alert(temp.get(1).tagName); // Fetch second element, alert the tagName 

要檢查結果有多少個元素包含,您可以使用.length,只是就像你在一個陣列或集合/節點列表上一樣:

alert(temp.length); // Alerts number of elements found. 
0

如果你想要做的是測試如果你的代碼是做你所期望的,Firebug這裏是你的朋友。它會給你一個控制檯來輸入一個像$('div.cmscomponent')這樣的命令,然後交互式地瀏覽它返回的結果。

然後,您可以將鼠標懸停你的命令返回的每一個項目,它會在頁面上突出顯示,所以你可以看到的命令返回該項目,如果這些項目是你所期望的那些/通緝。