这是我在我的网站上使用的插件片段:
$.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()
的回调属性?
答案 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
...
}
}
});