javascript - 将参数传递给 jQuery 每个函数

标签 javascript jquery each

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

something.each(build);

function build(vars) {

}

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

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

最佳答案

您可以使用闭包完成上述操作。 .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 Pane 中定义的 HTML 有何不同。查看函数如何引用存储的变量并将其附加到文本

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

这里是闭包的 MDN 页面以供更多引用 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

关于javascript - 将参数传递给 jQuery 每个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911182/

相关文章:

arrays - 如何将像这样的数组 ["John,Doe,11222019", "Mark,King,11232019", "Angle,Darma,11242019"] 转换为哈希 Ruby 数组

javascript - GetStream.io - 删除 feed Nodejs

javascript - 从站点响应中读取的文件与实际文件不完全匹配

javascript - 在 D3.js 中设置 x 轴引用线

javascript - Jquery 隐藏在我的对话框关闭跨度中不起作用

javascript - Kendo UI 的加载指示器?

javascript - underscore _.each 和 forEach 有什么区别?

javascript - 如何在 promise 中处理这种情况?

javascript - 仅当输入数字时才 trim 最后一位数字。

jquery - 查找每个元素的最后一个子元素