【问题标题】:find first element with left offset greater than [duplicate]找到左偏移量大于[重复]的第一个元素
【发布时间】:2019-01-02 18:07:50
【问题描述】:
var x = 50;

我需要选择offset().left大于x的第一个card

$('.card').each(function(){
    if ($(this).offset().left > x) {...}
});

那么如何将上面的内容减少到第一个匹配的元素呢?

【问题讨论】:

  • @VinitDivekar 它有什么不同?他们希望在每个循环中将第一个元素与 offset().left > x 匹配——当他们发现条件匹配时,他们只需要中断循环
  • @chevybow,不,它不是重复的。再次阅读目标链接,尤其是问题说明和最后答案
  • 在你的if 中,你可以对第一个元素和return false; 做任何你想做的事情,这将退出.each()。这是重复的。
  • @AndreiGheorghiu,不,试试你会看到
  • 如果你想要一个返回元素的表达式,然后你可以用它做任何事情,你可以使用filter()each() 不返回集合(或其任何成员)。它不返回任何东西。它只是在集合上运行代码。但是您仍然可以使用each() 来达到您的目的。在each() 之外定义一个变量。在 each() 中,您将元素放在变量中,return false; 现在在 each() 之外,并且将(第一个)元素放在变量中,可以随心所欲地使用它。

标签: jquery


【解决方案1】:

您可以使用jQuery's filter function 来做到这一点

类似

var x=50;
var first=$('.card').filter(()=>{
    return $(this).offset().left>x;
}).first();

应该给你第一个符合你要求的元素。

【讨论】:

  • Uncaught TypeError: r.getClientRects is not a function
  • 您的代码中的其他地方似乎存在问题。确保检查 r 是您期望的任何对象,并且它具有 getClientRects 函数
  • 听起来您正在使用 jQuery 3.x.x,其 jQuery UI 版本低于 1.2.0,@puerto。见this question
  • 我的页面上没有 jquery ui。 jquery 是 3.3.1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
相关资源
最近更新 更多