【问题标题】:How to detect if Javascript/JQuery object has a height?如何检测 Javascript/JQuery 对象是否有高度?
【发布时间】:2011-10-20 09:34:02
【问题描述】:

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

var myHeight = myJQueryElement.height();

问题是,当我在 Firefox 中点击“评论”元素时,我得到了这个错误:

错误:未捕获的异常:[异常...“无法转换 JavaScript 参数 arg 0 [nsIDOMViewCSS.getComputedStyle]”nsresult:“0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS 框架 :: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js :: :: line 18" 数据:无]

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

var nt = myJQueryElement.nodeType;

nodeType 总是“未定义”。很奇怪,因为当我在 Firebug 的 Javascript 调试器中单击该元素时,它会显示正确的 nodeType 为 8。

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

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我可以像这样迭代<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 元素

      【讨论】:

        猜你喜欢
        • 2011-08-18
        • 2019-12-05
        • 2013-06-07
        • 1970-01-01
        • 2018-02-19
        • 2017-12-10
        • 2011-11-07
        • 2014-01-20
        • 1970-01-01
        相关资源
        最近更新 更多