找到左偏移量大于[重复]的第一个元素

Posted

技术标签:

【中文标题】找到左偏移量大于[重复]的第一个元素【英文标题】: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() 之外,并且将(第一个)元素放在变量中,可以随心所欲地使用它。 【参考方案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

以上是关于找到左偏移量大于[重复]的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章

查找排序数组中大于目标的第一个元素

如何使用键在php中获取数组的第一个元素以及如何找到数组的第一个键[重复]

如何在分隔字符串的第一个元素上找到部分重复项?

字典排序

c_cpp 找到整数数组中的第一个重复元素

需要找到数组中每个元素的下一个更大的元素[重复]