如何检测Javascript / JQuery对象是否有高度?

时间:2011-08-04 21:32:41

标签: javascript jquery

我正在迭代DOM来改变不同元素的显示特性。我循环遍历元素,并使用JQuery .height()方法获取高度:

var myHeight = myJQueryElement.height();

麻烦的是,当我在Firefox中点击“comment”元素时,我收到此错误:

错误:未捕获的异常:[Exception ...“无法转换JavaScript参数arg 0 [nsIDOMViewCSS.getComputedStyle]”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”location:“JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js ::: :第18行“数据:否]

好的,我可以检查nodeType,对吗?不,奇怪的是,当我打电话时:

var nt = myJQueryElement.nodeType;

nodeType始终为“未定义”。很奇怪,因为当我点击Firebug中Javascript调试器中的元素时,它会向我显示一个正确的nodeType为8。

我想做的就是检查元素是否有高度> 0,否则跳过它。

任何线索如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您需要检查DOM节点,而不是jQuery对象。

 // ----------------------v----extract the DOM node at index 0
var nt = myJQueryElement[ 0 ].nodeType;

答案 1 :(得分:0)

我可以在迭代<body>时重新创建错误:

var body = document.getElementsByTagName('body')[0];

for (var i in body.children) {
    console.log(body.children[i]);
    console.log($(body.children[i]).nodeType);
}

但是在使用.each()

进行迭代时,我没有收到错误
$('body').children().each(function() {
    console.log($(this).height());
});

可能使用.each()递归来迭代DOM元素