2015-02-11 79 views
-1

我有以下代码:如何在Jquery中动态添加onclick?

obj2 = JSON.parse(ajax.responseText); 
     for (var i = 0; i <= obj2.length - 1; i++) { 

      var row = table.insertRow(1); 
      var cell1 = row.insertCell(0); 
      var cell2 = row.insertCell(1); 
      var cell3 = row.insertCell(2); 
      var cell4 = row.insertCell(3); 
      var cell5 = row.insertCell(4); 
      var cell6 = row.insertCell(5); 
      var cell7 = row.insertCell(6); 
      var cell8 = row.insertCell(7); 

      cell1.innerHTML = obj2[i].qid; 
      cell2.innerHTML = obj2[i].question; 
      cell3.innerHTML = obj2[i].answer1; 
      cell4.innerHTML = obj2[i].answer2; 
      cell5.innerHTML = obj2[i].answer3; 
      cell6.innerHTML = obj2[i].answer4; 
      $(function(){ 
       var btn = document.createElement("BUTTON");   
       var t = document.createTextNode("Delete "+cell1.innerHTML); //this works well  
       btn.appendChild(t); 
       btn.className="menu_buttons"; 
       $(btn).on('click' ,function(){ 
        delete_(cell1.innerHTML);//this assigns the value of the last iteration to each button 


       }); 
       cell8.appendChild(btn); 
      }); 
      } 

我遍历JSON数组和我想要分配的相同的功能(使用不同的参数,根据从阵列的ID),以每个按钮,并且如我在评论中提到,它用相同的参数覆盖每个按钮。 有什么问题?

+0

哪里是细胞.. – 2015-02-11 10:52:59

+0

我张贴的全循环 – dexter 2015-02-11 10:57:20

回答

0

创建动态按钮,并附加事件处理这样

HTML

<div id="test"></div> 

JS

for(i = 1; i <=10; i++) { 
    var test = $('<button/>', 
    { 
     text: 'D.Button', 
     click: function() { alert('test'); } 
    }); 
    $('#test').append(test); 
    } 

DEMO

+1

我知道你只是一个例子,但我们应该*不*在循环内创建函数,在循环内部调用jQuery选择器也不是一个好主意。这是一个更好的和高性能的方法:http://jsfiddle.net/RokoCB/pv8dmyn3/3/ – 2015-02-11 11:22:33

+0

@ RokoC.Buljan:是的,你是对的。谢谢 ... – 2015-02-11 11:24:34