6

理解できない行のあるコードを継承しました。

function updateQty () {
        obj.find('.inputAmount').html(qty);
        input.val(qty);

        $.each(change_actions, function() {
            this(qty);
        });
    }

関数内で正確に何が起こっているの.eachですか?this(var)このように使用されているのは見たことがありません。

4

3 に答える 3

5

this内部は、$.eachループしている現在のオブジェクトを参照します。

何かを渡すには、オブジェクトは関数でなければなりません。

于 2013-07-24T19:53:28.827 に答える
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()。クリックが発生するたびに、サブスクライブされたイベントがトリガーされます。

于 2013-07-24T19:57:54.673 に答える
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/

于 2013-07-24T19:55:56.600 に答える