【问题标题】:Arguments in callback function回调函数中的参数
【发布时间】:2014-09-19 00:32:35
【问题描述】:

我有一个小库,这是我使用的一个函数的片段

HashManager.prototype.on = function(hash, callback) {

    if(hash[0] == '#') { hash = hash.substr(1); }

    if( typeof this.observers[hash] !== 'object' ) {
        this.observers[hash] = [];
    }

    this.observers[hash].push(callback);

    return this.observers[hash][this.observers[hash].length-1];
};

这是我的arr

    var ajaxURLS = {
    '#!o_kompanii': '/apages/about.html',
    '#!production': '/apages/production.html',
    '#!gde_kupit': '/apages/gde_kupit.html',
    '#!hozyaike_na_zametku': '/apages/hozyaike_na_zametku.html',
    '#!news': '/apages/news.html',
    '#!contacts': '/apages/contacts.html',
    '#!kurochka_po_zernyshku': '/apages/kurochka_po_zernyshku.html'

    };

这是我的循环

   var HM = new window.HashManager();
   $.each(ajaxURLS,function(hash, uri) {
        HM.on(hash, function(uri,hash) {
        console.log(uri);
        console.log(hash);
        });
  });

我的问题是 console.log 总是打印我数组的最后一个键和值 我怎样才能正确传递参数? 非常感谢,最好的问候

【问题讨论】:

    标签: javascript jquery loops callback arguments


    【解决方案1】:

    Javascript closure 应该可以帮助您:

    var HM = new window.HashManager();
       $.each(ajaxURLS, function(_hash, _uri) {
            HM.on(_hash, (function(uri,hash) {
                console.log(uri);
                console.log(hash);
            })(_hash, _uri));
      });
    

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2018-01-03
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多