【问题标题】:jQuery: want answer to height() to be 0 for hidden elementjQuery:希望对隐藏元素的高度()的答案为 0
【发布时间】:2012-06-24 02:21:18
【问题描述】:

有很多关于如何获取/设置隐藏元素高度的帖子(例如thisthis)。

不过,我想要的是一个高度查询,它给出了隐藏元素的答案 0 和可见元素的 visible height。我可以用一堆if 语句来做到这一点,但有没有更简单的方法?

谢谢。

【问题讨论】:

  • 你需要返回的 0 还是你可以在 jQuery 中使用 :visible 选择器只查看可见元素的高度?
  • 我当然可以使用:visible 选择器。但是,它在 onresize 函数中,我需要进行大量检查,因此 DOM 查询越少越好:)
  • 发布一些代码和 html 作为参考。展示您尝试过的内容

标签: javascript jquery height hidden


【解决方案1】:

您可以创建自己的 jQuery 方法来满足您的需求:

jQuery.fn.visHeight = function() {
    var h = this.height();
    if (h != 0 && !this.is(":visible")) {
        h = 0;
    }
    return(h);
};

【讨论】:

  • 谢谢。我正在做类似的事情,虽然我会先询问它是否是visible(鉴于它在我正在处理的情况下总是有高度的)。我从您的回答中得出结论,没有内置的 jQuery 操作可以为您执行此操作(这是我问题的本质)。
  • 您没有向我们展示您尝试编写的整个问题,但是您可以首先通过更改原始选择器或过滤器来消除 jQuery 对象中的隐藏项所以你甚至从不询问隐藏物品的高度。我不知道有任何内置的 jQuery 功能。
  • 伙计,我不太清楚为什么我需要向你展示“整个问题”。我不会有太多的歧义:“我想要的是一个高度查询,它给出隐藏元素的答案 0 和可见元素的可见高度。”
  • @Nick - 我只是建议如果您将问题移到上游并在询问高度之前消除隐藏的项目,可能还有其他方法可以解决问题。如果您不想这样做,则不必那样做-只是另一个想法。在 SO 上,我们经常会收到关于解决方案某个方面的详细问题,如果披露了整个问题,则有更好的方法来解决问题。您没有义务披露这一点,但这就是我们有时会询问的原因。
  • 谢谢。请忽略我对这个网站的普遍不满。除了前面的评论外,我一直彬彬有礼,并且在我的问题中尽可能清楚。然而,我厌倦了“发布一些代码和 html 作为参考。展示你尝试过的东西”(如上)的下意识请求,或者对完全合法的努力的不假思索的匿名 -1 响应(例如,stackoverflow.com/questions/11061414/…
猜你喜欢
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
相关资源
最近更新 更多