在循环中动态设置JQuery中的事件侦听器(单击)

时间:2016-05-25 03:12:57

标签: javascript jquery

我遍历一组自定义对象,对于数组中的每个对象,我创建一个带有on click事件监听器的按钮,动态设置on click事件的结果。换句话说,单击按钮A可能会导致警报'foo',单击按钮B可能会导致不同的行为 - 警告'bar'。

我的JSHint linter说“不要在循环中创建函数”。

我希望SO社区可以分享更好的设计模式来实现这个目标(vanilla js或JQuery)。

查看Fiddle - 这是我正在做的极其简化的版本,但说明了这一点。

Javascript(ES6):

getSupportFragmentManager().beginTransaction().add(R.id.folders_section, ctrlFragOne, "album_search_results").add(R.id.selection_section, ctrlFragTwo, "indicator").commit();

HTML

class Tool {
 constructor (name, mainFunction) {
  this.name = name;
  this.mainFunction = mainFunction;
 }
 getName() {
   return this.name;
 }
 getMainFunction() {
   return this.mainFunction;
 }
}

var hammer = new Tool('hammer', 'bang on nails');
var saw = new Tool('saw', 'cuts heavy wood');
var toolbox = [hammer, saw];

for (let i in toolbox) {
  $('.wrapper').append('<div class=\"'+toolbox[i].getName()+'  button\">'+toolbox[i].getName()+'</div>');
  $('.wrapper').on('click', '.'+toolbox[i].getName(), function() {
    alert(toolbox[i].getMainFunction());
   });
}

1 个答案:

答案 0 :(得分:0)

您只需将点击功能分配给共享班级RewriteEngine on RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com RewriteRule ^(.*)$ index-merchant.php?id=%1 [L,NC,QSA] ,并将邮件分配到.button属性: DEMO

data