【问题标题】:Transform a lodash/underscore collection in a jQuery object (chaining)在 jQuery 对象中转换 lodash/下划线集合(链接)
【发布时间】:2014-05-29 17:22:33
【问题描述】:

我想在一个 jQuery 对象中无缝地包装一个 lodash 集合。现在我将 lodash 输出保存在一个变量中并将其提供给 jQuery:

//simplified code
var els = [document.getElementById('a'), document.getElementById('b')];
els = _(els)
    .map(doStuff)
    .map(doMoreStuff);
var $els = $(els);

但我想像这样链接它:

//pseudo code
_(els)
    .map(doStuff)
    .map(doMoreStuff)
    .jQueryfy() //this magic method, missing
    .show() //jQuery method, right away

我认为tap 是可能的,但这实际上并没有改变集合。

_(els)
    .map(doStuff)
    .map(doMoreStuff)
    .tap(function(array) { return $(array); }) //doesn't actually return a jQuery object
    .show()

【问题讨论】:

  • 您是否尝试 .show() 集合中的所有元素?您可能必须使用 map 或 each 来创建您的 jQuery 对象。

标签: javascript jquery lodash


【解决方案1】:

这应该通过使用 mixin 和带有 DOM 元素数组的 jQuery constructor 来实现:

_.mixin({jQueryfy: jQuery}, {chain:false});

请注意,jQuery 本身已经支持基本的collection manipulation functions,所以你也可以编写你的示例

$("#a, #b").map(doStuff).map(doMoreStuff).show();

【讨论】:

  • 超级甜!我知道 lodash 有一些这样的单线。这是一个简化的示例,但实际上这些元素是从集合中创建的。无论哪种方式,lodash 的循环都更快
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多