Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在表中为动态tr添加事件单击_Jquery - Fatal编程技术网

Jquery 如何在表中为动态tr添加事件单击

Jquery 如何在表中为动态tr添加事件单击,jquery,Jquery,我在运行时有html表和外接程序表行。我想添加到新tr(动态tr)添加点击事件 我写了这段代码,但它不起作用 $(“#GridView1 tbody tr”)。单击(函数(e){ var id=$(this.find(“.lbl”).text(); workOrderId=id; //$(“#gridtbl tr”).remove(); $.ajax({ url:“PublicHandler.ashx”, contentType:“应用程序/json;字符集=utf-8”, 数据:{workOr

我在运行时有html表和外接程序表行。我想添加到新tr(动态tr)添加点击事件 我写了这段代码,但它不起作用

$(“#GridView1 tbody tr”)。单击(函数(e){

var id=$(this.find(“.lbl”).text();
workOrderId=id;
//$(“#gridtbl tr”).remove();
$.ajax({
url:“PublicHandler.ashx”,
contentType:“应用程序/json;字符集=utf-8”,
数据:{workOrderId:id},
成功:功能(数据){
var grd=$(“#gridtbl”);
$。每个(数据、功能(i、b){
var str=“”;
str+=“”+b.WorkId+“”;
str+=“”+b.WorkName+“”;
str+=“”+b.SectionName+“”;
str+=“”+b.SectionSupervisor+“”;
if(b.RequestCount==null){
str++=”+”+”;
}否则{
str+=“”+b.RequestCount+“”;
}
str++=”+”+”;
str+=”;
$(str)。单击(函数(){
警报(“HIIIII”);
}).end().appendTo(“#gridtbl tr”);
//grd.追加(str);
});
},
数据类型:“json”
});
弹出窗口(e);
});
您可以使用

或者最近在jQuery1.7中,您可以使用


正如@Matt在评论中提到的,该方法最好不要使用,但我将保持示例不变

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

改为使用以下
$(“#GridView1 tbody tr”)。live(“单击”,函数(e)

我建议不要将单击事件绑定到您添加的每个tr,而是查看委托函数

了解更多有关委派的信息


另外,人们可能会建议使用live,我不建议这样做。因为在您的示例中,您总是希望在表内绑定(具有唯一Id),所以您可以绑定(委托),而不是让服务器均匀地侦听主体(live绑定到的主体)将其添加到表中。

如果添加了动态表..则可以使用以下代码在行单击中获取行数据。 注意:可以使用表行的类名或Id名而不是“tr”

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

你也可以这样做

$.each(data, function (i, b) {
    $tr = $('<tr />', {
        id : <tr_id>,
        on : {
            click : function (e) {
                // here goes the click event logic
            }
        }
    }).appendTo("#gridtbl");
});
$。每个(数据、函数(i、b){
$tr=$(''){
id:,
关于:{
点击:功能(e){
//这里是点击事件逻辑
}
}
}).附于(“#gridtbl”);
});

您需要使用.on()(jQuery 1.7+)或.delegate(),因为它已被弃用,所以您可能应该停止使用。
  $("#GridView1 tbody tr").live("click",function (e) {
  $("body").on('click', 'tr', function () 
   {
          var Name = $(this).find('td:first').text();
          alert(Name);
   });
$.each(data, function (i, b) {
    $tr = $('<tr />', {
        id : <tr_id>,
        on : {
            click : function (e) {
                // here goes the click event logic
            }
        }
    }).appendTo("#gridtbl");
});