jQuery.each() - 将额外的参数传递给callback参数

时间:2015-03-24 11:52:14

标签: javascript jquery

这是我在我的网站上使用的插件片段:

$.fn.extend({
    limiter: function(limit, elem) {
        $(this).on("keyup focus", function() {
            setCount(this, elem);
        });
        function setCount(src, elem) {
            ...
        }
    }
});

setCount()函数仅在数组中的elem属性时才有效 - 仅接受单个值。

我想更改它,以便我可以将数组(在我的情况下为多个选择)传递给setCount()函数。

我认为解决方案是使用jQuery.each()迭代器,如下所示:

$.fn.extend({
    limiter: function(limit, elem) {
        $(this).on("keyup focus", function() {
            $.each(elem, setCount)
        });
        function setCount(src, elem) {
            ...
        }
    }
});

问题是我还必须传递this对象,该对象指向收到"keyup focus"的对象,就像第一个代码段中的情况一样。

如何在给定方案中将this对象传递给$.each()的回调属性?

2 个答案:

答案 0 :(得分:0)

尝试使用bind绑定上下文(警告不兼容IE8):

$.each(elem, setCount.bind(this))

这使得每个setCount调用中的this - 上下文,从事件处理程序指向this

答案 1 :(得分:-1)

您可以继续引用"首先" this并在setCount中使用它:

$.fn.extend({
limiter: function(limit, elem) {
    var that = this;

    $(this).on("keyup focus", function() {
        $.each(elem, setCount)
    });
    function setCount(src, elem) {
        // use 'that' here
        ...
    }
}

});