转换 jQuery 对象中的 lodash/underscore 集合(链接)

Transform a lodash/underscore collection in a jQuery object (chaining)

本文关键字:集合 underscore 链接 lodash jQuery 对象 转换      更新时间:2023-09-26

我想将 lodash 集合无缝包装在 jQuery 对象中。现在我正在将 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()

这应该通过将 mixin 与接受 DOM 元素数组的 jQuery 构造函数一起使用来实现:

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

请注意,jQuery本身已经支持基本的集合操作函数,因此您可以编写示例以及

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