2010-05-04 23 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')这样的命令,然后交互式地浏览它返回的结果。

然后,您可以将鼠标悬停你的命令返回的每一个项目,它会在页面上突出显示,所以你可以看到的命令返回该项目,如果这些项目是你所期望的那些/通缉。