【问题标题】:Convert jquery selectors to array将 jquery 选择器转换为数组
【发布时间】:2012-09-10 15:37:56
【问题描述】:

我需要能够将当前选择器存储在当前视口中,然后 10 秒检查它们是否仍在用户当前视口中。

我的解决方案是将选择器存储在一个数组中,然后在 10 秒内将旧选择器与新选择器进行比较,看看是否有匹配项。如果他们这样做......做点什么。

所以我相信使用 .each 并构建数组,除非有人对此有更优雅的解决方案?

$('.gridContainers:in-viewport')

这将返回一个标准选择器。

【问题讨论】:

  • 我不明白。你能详细说明一下吗?
  • 您将不得不发布一些标记和一些 javascript,以便我们了解您在做什么
  • 如果我理解你的问题,他们可能是处理这种情况的更好方法,但你处理的方式听起来不错。没有代码示例就无法确定。如果您正在使用的代码,请发布一些示例。
  • $(selector) 总是返回一个数组。

标签: javascript jquery arrays selector


【解决方案1】:

调用 $(selector) 返回一个类似数组的 jQuery 对象,而不是一个实际的 JavaScript 数组,尽管出于他们尝试将其转换为实际数组的目的,可能没有必要。

这就是将选择器转换为原生 Javascript 数组的方法。

$(selector).toArray()

Jquery.toArray()

【讨论】:

  • 不需要调用 .toArray() 因为 $(selector) 已经返回了一个数组。
  • 嗯,虽然使用 toArray 确实会将其转换为 trun js 数组。
  • 如果您不提供参数,.get()(不要与 jQuery.get() 混淆,它是一个 AJAX GET 请求)做同样的事情。不过,不确定是否有关于应该使用哪个指南。
  • @BishopZ 调用 $(selector) 返回一个类似数组的 jQuery 对象,而不是实际的 JavaScript 数组,尽管出于他们尝试将其转换为实际数组的目的,可能没有必要。
  • 注意,这是一个 DOM 对象数组,而不是 jQuery 对象数组
【解决方案2】:

使用 ES6

Array.from($(selector)); // return JS array 

【讨论】:

    【解决方案3】:

    试试下面的FIND方法:

    $('element').find('selection');
    

    这会将所有选定的元素提供给 Array。希望这会有所帮助

    【讨论】:

    • .find() 返回一个 jQuery 对象,而不是一个数组。
    • 这无济于事,因为它只会找到一个元素下降到您当前的选择器。
    • 是的,但它可以帮助人们意识到,对于他们试图使用数组实现的目标,还有另一种更简单的解决方案。所以我要 +1。
    猜你喜欢
    • 2014-04-29
    • 2015-10-12
    • 2021-08-27
    • 2021-07-08
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多