【问题标题】:Passing arguments to jQuery each function将参数传递给 jQuery 每个函数
【发布时间】:2013-09-25 12:17:16
【问题描述】:

当使用 jQuery "each" 函数时,有没有办法将参数传递给被调用的函数?

something.each(build);

function build(vars) {

}

我知道我可以简单地执行以下操作,但我想知道是否有一种方法可以直接传递参数。

something.each(function() {
    build(vars);
);

【问题讨论】:

标签: javascript jquery each


【解决方案1】:

您可以使用闭包来完成上述操作。 .each 函数将具有两个参数(索引和元素)的函数作为参数。

您可以调用一个函数,该函数返回一个接受这两个参数的函数,并在其中存储变量,当 返回 函数由于 JavaScript 作用域而执行时将引用这些变量行为。

这是一个例子:

// closureFn returns a function object that .each will call for every object
someCollection.each(closureFn(someVariable));

function closureFn(s){
    var storedVariable = s; // <-- storing the variable here

    return function(index, element){ // This function gets called by the jQuery 
                                     // .each() function and can still access storedVariable

        console.log(storedVariable); // <-- referencing it here
    }
}

由于 JavaScript 作用域的工作原理,storedVariable 将被返回的函数引用。您可以使用它来存储变量并在任何回调中访问。

我有一个 jsFiddle 也证明了这一点。请注意页面上的文本输出与 HTML 窗格中定义的 HTML 有何不同。查看函数如何引用存储的变量并将其附加到文本中

http://jsfiddle.net/QDHEN/2/

这里是闭包的 MDN 页面以获取更多参考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2010-09-27
    • 1970-01-01
    • 2014-12-19
    • 2011-04-16
    • 2017-02-05
    • 2014-10-18
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多