我用一条我不理解的行继承了一些代码。
function updateQty () {
obj.find('.inputAmount').html(qty);
input.val(qty);
$.each(change_actions, function() {
this(qty);
});
}
.each
函数内究竟发生了什么?我以前从未见过this(var)
以这种方式使用过。
答案 0 :(得分:5)
this
内的 $.each
指的是您正在循环的当前对象。
对象必须是一个函数才能传递一些东西。
答案 1 :(得分:3)
您可以参考以下示例:
var change_actions = [
function(x) { alert(x + 1); },
function(x) { alert(x + 2); }
];
var qty = 5;
$.each(change_actions, function() {
this(qty);
});
JSFiddle:http://jsfiddle.net/fuyz2/
答案 2 :(得分:3)
作者使用绑定设置自己的事件,因此change_actions
可能是在数量发生变化时订阅的函数。
尝试这样的事情:
// initialize with a value
var actions = [
function(x){ console.log('I see a new x: ' + x); }
];
// add actions "later"
actions.push(function(x){ console.log('Yup, a new x: ' + x); });
// Then execute them:
$.each(actions, function(){
this(4);
});
// add another one still
actions.push(function(x){ console.log(x + ' looks new'); });
// re-iterate over them
// Then execute them:
$.each(actions, function(){
this(5);
});
结果:
// first iteration (only 2 subscribed events)
[15:56:50.030] "I see a new x: 4"
[15:56:50.030] "Yup, a new x: 4"
// second iteration (now we have 3, one was added later)
[15:56:50.030] "I see a new x: 5"
[15:56:50.030] "Yup, a new x: 5"
[15:56:50.030] "5 looks new" // <-- new subscription
将其视为click
事件,以及如何通过绑定到$('element').click()
来添加订阅。每次点击发生时,任何订阅的事件都会被触发。