1

我有函数 foo 将 jquery 包装的节点作为参数。有没有更优雅的方式在节点集上运行这个函数?

我这样做的方式:

$('.for-foo').each(function () {
    foo($(this));
});
4

3 回答 3

2

你可以把它做成一个插件:

$.fn.foo = function(){
  return this.each(function(){
    // do something to each element "this"
  });
};

用法:

$('.for-foo').foo();

这也将使它可以与其他 jQuery 函数链接。

于 2012-07-14T17:07:28.247 回答
1

您可以将选择传递给函数,如下所示:

foo($(".for-foo"));

您的foo函数将如下所示:

function foo(selection) {
    selection.each(function() {
        // do stuff with each current node
    });
}

foo更混乱,但至少打电话更干净。

于 2012-07-14T17:00:24.517 回答
0

foo()的目的不明确,答案可能会有所不同。一个典型的例子可以是:

function foo($el) {
    $el.css('color', function(i) {
        return ['black', 'green', 'yellow', 'blue', 'red'][i];
    });
}
foo( $('.for-foo') );

工作样本

于 2012-07-14T17:05:50.833 回答