【问题标题】:jQuery height() in a condition conflicts somehow条件中的 jQuery height() 以某种方式发生冲突
【发布时间】:2012-10-09 22:32:40
【问题描述】:

我在检查某些元素是否高于 29 时遇到问题。这是我的代码:

jQuery('.somepath a span.lines').each(function() {
    var spanHeight = jQuery(this).height();
    alert(spanHeight);
    if(spanHeight > 29) {
        alert('test');  
    }
});

警报:22、22、22、22、44、测试(这样可以正常工作)

当我删除第一个 alert() 时,它不再工作了,所以 alert('test');不再执行:

jQuery('.somepath a span.lines').each(function() {
    var spanHeight = jQuery(this).height();
    if(spanHeight > 29) {
        alert('test');  
    }
});

我不明白这里出了什么问题。我尝试了很多东西,但我无法让它工作。

有人看到或知道这个问题吗? parseInt() 也不是解决方案..

【问题讨论】:

  • 你能用一些 html 制作一个简单的 jsfiddle 来告诉我们发生了什么吗?
  • 不要使用alert进行调试,试试console.log()
  • 可能您的第一个代码示例受益于每个alert() 造成的延迟。如果不查看更多代码,就不可能确定或知道如何。
  • @blazemonger 这可能是可能的。但这是我的应用程序中的最后一行 Javascript,所以我无法想象,但我现在会检查...
  • @tkone 此代码是大型应用程序的一部分。我要先检查 blazemonger 的评论

标签: jquery height alert


【解决方案1】:

使 span display: inline-block; 可以工作 -

Demo

<span class="lines" style="height: 30px; display: inline-block;">asdf sd fsda</span>​

$('span.lines').each(function() {
    var spanHeight = $(this).height();
    if(spanHeight > 29) {
        alert('test');  
    }
});​

【讨论】:

  • 当我删除具有固定高度的style 属性并显示内联块时,它仍在工作,所以这不是正确的解决方案。
  • @ArekvanSchayk 删除样式属性时它不起作用 - jsfiddle.net/XKgTk/1
  • @ArekvanSchayk 实际上,如果您删除 display: inline-block 属性它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2021-06-03
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多