2011-12-07 56 views
2

我有html表格,並在運行時添加在表格行中。我想添加到新的TR(動態TR)添加ClickEvent 我寫這篇文章的代碼,但它不能正常工作如何添加事件點擊查看錶中的動態tr

$( 「#GridView1 TBODY TR」)。點擊(函數(E){

   var id = $(this).find(".lbl").text(); 
       workOrderId = id; 
       // $("#gridtbl tr").remove(); 
       $.ajax({ 
        url: "PublicHandler.ashx", 
        contentType: "application/json; charset=utf-8", 
        data: { workOrderId: id }, 
        success: function (data) { 
         var grd = $("#gridtbl"); 
         $.each(data, function (i, b) { 
          var str = "<tr>"; 
          str += "<td style='display: none;'>" + b.WorkId + "</td>"; 
          str += "<td>" + b.WorkName + "</td>"; 
          str += "<td>" + b.SectionName + "</td>"; 
          str += "<td>" + b.SectionSupervisor + "</td>"; 
          if (b.RequestCount == null) { 
           str += "<td>" + " " + "</td>"; 
          } else { 
           str += "<td>" + b.RequestCount + "</td>"; 
          } 

          str += "<td>" + " " + "</td>"; 

          str += "</tr>"; 
          $(str).click(function() { 
           alert("hiiiiiiiiiii"); 

          }).end().appendTo("#gridtbl tr"); 
          // grd.append(str); 

         }); 
        }, 
        dataType: "json" 

       }); 
       popup(e); 
      }); 
+0

你需要使用。對()(jQuery的1.7+)或.delegate() – Matt

回答

7

可以使用delegate

$("#GridView1 tbody").delegate("tr", "click", function(e) { 
    //rest of the code here 
}); 

或在最近的jQuery 1.7,你可以使用on

$("#GridView1 tbody").on("click", "tr", function(e){ 
    //rest of the code here 
}); 

在通過@馬特的評論live方法是deprecated所提到它最好不要使用,但我會留下完整的例子

$("#GridView1 tbody tr").live("click",function (e) { 
+0

你應該採取生活過,因爲它已經過時了。 – Matt

1

使用以下代替$("#GridView1 tbody tr").live("click" ,function (e)

+0

請示例,謝謝 – Pouya

1

我建議不要將點擊事件綁定到您添加的每個tr,而是查看委託函數。

閱讀更多關於代表here

也有人可能會建議住,我不會建議。因爲在你的例子中,你總是希望綁定在表內(它有一個唯一的ID),所以你可以將它綁定(委託)到表中,而不是讓它監聽正在綁定的主體。

0

如果您添加了動態表格,那麼您可以使用以下代碼獲取有關行點擊的行數據。 注意:您可以使用表格行的類名或Id名稱而不是'tr'。

$("body").on('click', 'tr', function() 
    { 
      var Name = $(this).find('td:first').text(); 
      alert(Name); 
    }); 
0

你也可以這樣做。

$.each(data, function (i, b) { 
    $tr = $('<tr />', { 
     id : <tr_id>, 
     on : { 
      click : function (e) { 
       // here goes the click event logic 
      } 
     } 
    }).appendTo("#gridtbl"); 
}); 
相關問題