将变量方法绑定到单击事件

时间:2017-01-31 11:01:55

标签: jquery

我在使用jQuery时遇到了一些问题,我想将事件绑定到生成的div

myArray = [ {name : 'object1', clickMethod : function(){...}},
          {name : 'object2', clickMethod : function(){...}},
          {name : 'object3', clickMethod : function(){...}}
        ]

在我的循环中,我想做这样的事情:

for(var i = 0; i < myArray.length; i++) {
  Utils.getGeneratedHtml(myArray[i])
}

//Utils.getGeneratedHtml
Utils.getGeneratedHtml = function(element,selector) {
     var newE = $('<strong />',{id : element.name}).append(element.name);
     newE.click(function(){
        element.clickMethod()
     })

    newE.appendTo(selector);
}

然而,似乎没有考虑该方法。我应该使用课程吗?

2 个答案:

答案 0 :(得分:1)

如果要使用内联函数,则需要在使用它之前声明它并使用var来定义它。注意 ”。” javascript中的变量名称不允许使用。您也没有将selector-parameter传递给getGeneratedHtml函数。参见示例:

var myArray = [{
  name: 'object1',
  clickMethod: function() {
    alert("clicked");
  }
}, {
  name: 'object2',
  clickMethod: function() {
    alert("clicked");
  }
}, {
  name: 'object3',
  clickMethod: function() {
    alert("clicked");
  }
}]

var getGeneratedHtml = function(element, selector) {
  var newE = $('<strong />', {
    id: element.name
  }).append(element.name);
  newE.click(function() {
    element.clickMethod()
  })

  newE.appendTo(selector);
}

for (var i = 0; i < myArray.length; i++) {
  getGeneratedHtml(myArray[i], "div")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

答案 1 :(得分:0)

首先var new无效并且应该抛出错误,因为new是关键字。

您需要使用实时事件$('static-el').on('event', 'dynamic-el', function)才能使代码正常工作。