【问题标题】:Wrap HTMLCollection into a jQuery/Zepto function?将 HTMLCollection 包装到 jQuery/Zepto 函数中?
【发布时间】:2014-07-15 14:01:30
【问题描述】:

我想知道如何成功地将 HTMLCollection 包装到 jQuery/Zepto 函数中。

我有以下相同的选择器:一个在 Zepto 中,另一个在围绕 Zepto 函数的 vanilla JavaScript 中。但是,后者不会使 Zepto 方法对其节点可用。

$('#navigation a');
$( document.getElementById('navigation').getElementsByTagName('a') );

我想让它们等效。

编辑:我使用的是 Zepto 而不是 jQuery,并没有提到它假设 Zepto 的行为方式与 jQuery 相同。

【问题讨论】:

  • 那么为什么不首先使用 $('#navigation a')
  • 似乎对我有用:jsfiddle.net/6jkWE。看起来您的问题出在其他地方(如果确实存在问题)。
  • @DavidThomas,我的部分代码是纯 JS 并且想让它与我的 jQuery 函数兼容。
  • @Oriol:那是什么意思?只有一个 jQuery 对象包含一组元素。您如何尝试访问/使用该集合中的单个元素?
  • 是的,它确实jsfiddle.net/6jkWE/2。由于$(...) 返回一个 jQuery 对象,所以 every jQuery 方法有效。正如我所说,您遇到的问题一定是其他问题。将 HTMLCollection 传递给 jQuery 工作得非常好。但如果没有更多信息,我们无法真正帮助您。如果$(htmlCollection) 对您不起作用,那么其他任何东西都不会。

标签: javascript jquery dom zepto


【解决方案1】:

您可以尝试以下(未经测试)

var collection = document.getElementById('navigation').getElementsByTagName('a');

$().add(Array.prototype.slice.call(collection));

根据add 的文档(参见docu),应该可以将多个元素添加到当前的jQuery 对象。

$( ... ).add( elements )

一个或多个要添加到匹配元素集中的元素。

【讨论】:

  • 感谢@Luke,我只是希望我可以避免构造一个新的 jQuery 对象,而是调整我的 vanilla JS 选择或以不同的方式包装 jQuery 函数。
  • 如果您想使用 jquery 魔法,您还需要确保每个对象和集合都有适当的上下文以及连接所有内容所需的一切。
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多