2013-03-07 2 views
0

У меня есть функция ниже, которая генерирует строки кнопок.динамически созданные кнопки и обработчики событий

Есть ли способ создания обработчика событий, который использовал бы выбранный идентификатор каждой строки (val.Id)?

Благодаря

  $("#test").on("click", "input.select", function() { 
      alert($(this).closest("tr").data("resultId")); 
     }); 

     $("#btnSearch").click(function() { 
      var searchTerm = $("#tbSearchField").val(); 
      $.getJSON('http://localhost:50151/api/principals/' + searchTerm, function (data) { 
       var html = "" 
       var sel = "" 

       $.each(data, function (key, val) { 
        sel = val.Id 
        html += '<tr data-result-id="' + sel + '">' 
        html += '<td><input class="select" type="button" text="Select" value="Select"></td>' 
        html += '</tr>' 
       }); 
       $(html).appendTo('#test'); 
      }); 
     }); 

Вот что сгенерированный HTML выглядит следующим образом:

<table id="test" border="0" style="border: none; width: 100%; padding: 2px;"> 
<tbody> 
    <tr data-result-id="1999860918"> 
     <td> 
      <input class="select" type="button" value="Select" text="Select"> 
     </td> 
    </tr> 
    <tr data-result-id="1169565143"> 
     <td> 
      <input class="select" type="button" value="Select" text="Select"> 
     </td> 
    </tr> 
    <tr data-result-id="1404344114"> 
     <td> 
      <input class="select" type="button" value="Select" text="Select"> 
     </td> 
    </tr> 
</tbody> 
</table> 
+1

Можете ли вы объяснить немного больше .... что именно вы пытаетесь сделать – Peeyush

+0

каждая строка имеет кнопку ... и каждая кнопка должна обрабатывать уникальный идентификатор этой строки ... Я хотел бы создать один обработчик событий, который обрабатывает все эти кнопки. – SkyeBoniwell

ответ

1

Добавить идентификатор в строку, а затем получить его оттуда.

html += '<tr data-result-id="' + sel + '">' 

затем, выше текущего кода,

$("#test").on("click","td input[type=button]", function(){ 
    alert($(this).closest("tr").data("resultId")); 
}); 

удалить onlick атрибут.

конечный результат:

$("#test").on("click","input.select", function(){ 
    alert($(this).closest("tr").data("resultId")); 
}); 
$("#btnSearch").click(function() { 
    var searchTerm = $("#tbSearchField").val(); 
    $.getJSON('http://localhost:50151/api/principals/' + searchTerm, function (data) { 
     var html = "" 

     $.each(data, function (key, val) { 
      var sel = val.Id; 
      html += '<tr data-result-id="' + sel + '">'; 
      html += '<td><input type="button" class="select" text="Select" value="Select"></td>'; 
      html += '</tr>'; 
     }); 
     $(html).appendTo('#test'); 
    }); 
}); 
+0

Я добавил id в строку, вставленную в обработчик маленького события, который вы написали, удалил onclick, но кнопки теперь ничего не делают. В firebug я вижу, что теги tr имеют правильный val.Id. – SkyeBoniwell

+1

К сожалению, вы используете входы, а не кнопки. –

+0

Ой, если я перейду на кнопку? – SkyeBoniwell

1

попробовать это:

$("#btnSearch").click(function() { 
      var searchTerm = $("#tbSearchField").val(); 
      $.getJSON('http://localhost:50151/api/principals/' + searchTerm, function (data) { 
       var html = "" 
       var sel = "" 

       $.each(data, function (key, val) { 
        sel = val.Id 
        html += '<tr>' 
         html += '<td><input type="button" text="Select" value="Select" data-valId="' + sel +'"></td>' 
        html += '</tr>' 
       }); 
       $(html).appendTo('#test'); 
      }); 
     }); 


$("input[type='button']").on('click',function(){ 
    console.log($(this).data("valId")); 

}); 
Смежные вопросы