Jquery 如何在表中为动态tr添加事件单击
我在运行时有html表和外接程序表行。我想添加到新tr(动态tr)添加点击事件 我写了这段代码,但它不起作用 $(“#GridView1 tbody tr”)。单击(函数(e){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
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");
});