我继承了一些我不理解的代码。
function updateQty () {
obj.find('.inputAmount').html(qty);
input.val(qty);
$.each(change_actions, function() {
this(qty);
});
}
函数内部到底发生了.each
什么?我以前从未见过this(var)
这样用过。
我继承了一些我不理解的代码。
function updateQty () {
obj.find('.inputAmount').html(qty);
input.val(qty);
$.each(change_actions, function() {
this(qty);
});
}
函数内部到底发生了.each
什么?我以前从未见过this(var)
这样用过。
this
inside$.each
指的是您正在循环的当前对象。
对象必须是一个函数才能传递一些东西给它。
您可以关联以下示例:
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/
作者使用绑定设置了自己的事件,因此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()
. 每次点击发生时,都会触发任何订阅的事件。