动态创建按钮元素并立即调用事件侦听器

时间:2018-04-29 22:55:36

标签: javascript jquery ajax

所以我在响应成功的AJAX调用时创建按钮,每个按钮都需要调用具有该特定动态信息的函数。以下是我现在正在做的事情:

    for(var i = 0; i < variableNames.length; i++) {

      var getInvButton = document.createElement('button');
      getInvButton.id = 'getInventoryButton';

      console.dir('Add a button with this ID: ' + variableNames[i]);

      getInvButton.addEventListener("click", function(charName, membershipName) {
           console.dir('Test button click: ' + charName);
           getInventoryVar(charName, membershipName);
      } (variableNames[i], 
 result.Response.characters.data[variableNames[i]].membershipId), false);
 }

我可以正确访问我的变量,并使用每个按钮的正确参数调用getInventoryVar。但是,此功能在添加后立即执行。

2 个答案:

答案 0 :(得分:1)

您可以像这样重写您的处理程序:

userPromise.done { (user) in
    print(user)
}

答案 1 :(得分:0)

当您附加function(charName, memberShipNa...时,实际上正在调用您正在尝试附加的功能。您应该创建一个调用此函数的新函数:

getInvButton.addEventListener("click", function() {

    // old function
    function(charName, membershipName) {
       console.dir('Test button click: ' + charName);
       getInventoryVar(charName, membershipName);
  }(variableNames[i], result.Response.characters.data[variableNames[i]].membershipId);

}, false);

(可能更多的是succint,但是嘿)