2015-02-11 4 views
-1

У меня есть следующий код:Как добавить onclick динамически в JQuery?

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, и я хочу, чтобы назначить ту же функцию (с другим параметром, в зависимости от идентификатора из массива) для каждой кнопки, а также Я упомянул в комментарии, он перезаписывает каждую кнопку с тем же параметром. Что случилось?

+0

Где Cell .. –

+0

я отправил всю петля – dexter

ответ

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/ –

+0

@ RokoC.Buljan: Да, вы правы. Спасибо ... –