Javascript 单击事件不处理动态Id
我正在创建一个动态表,并希望通过单击Javascript 单击事件不处理动态Id,javascript,dynamic,html-table,click,Javascript,Dynamic,Html Table,Click,我正在创建一个动态表,并希望通过单击'+posttimestamp+''+post_txt+''+positionr+''+bride+'')来显示一个表单; } $(“#”+后时间戳)。单击(函数(e){ e、 预防默认值(); $('div.form').show(); } 尝试更改该选项 $('#'+posttimestamp)。单击(函数(e){…}) 到 $('#'+posttimestamp).live(“单击”,函数(e){…}) 您可能遇到这样的情况:jQuery试图将单击事件绑
'+posttimestamp+''+post_txt+''+positionr+''+bride+'')来显示一个表单;
}
$(“#”+后时间戳)。单击(函数(e){
e、 预防默认值();
$('div.form').show();
}
尝试更改该选项
$('#'+posttimestamp)。单击(函数(e){…})
到
$('#'+posttimestamp).live(“单击”,函数(e){…})
您可能遇到这样的情况:jQuery试图将单击事件绑定到DOM中尚不存在的.append()
-ed表单元格。使用.live()
将单击事件绑定到现在或将来存在的元素
使用表ID用作选择器的原因是,在调用时,该表肯定已经存在于DOM中。单击()
尝试:
你的标记看起来怎么样?什么是
$('#'+posttimestamp)
你能发布一个提琴来复制这个问题吗?谢谢,这是有效的。根据你的回答,我做了一些进一步的研究,发现从jQuery 1.7开始,.live()方法已被弃用。使用.on()附加事件处理程序。我也尝试了.on方法,但没有成功。奇怪,因为语法看起来与.live几乎相同。
$.each(json, function (index, value) {
var posttimestamp = value.Post_timestamp;
var replytimestamp = value.Reply_timestamp;
var topic = value.Topic;
var post_txt = value.Post_txt;
var reply_txt = value.Reply_txt;
var species = value.Species;
var postuser = value.Post_User;
var replyuser = value.Reply_User;
var medcond = value.MedCondPrimary;
var breed = value.Breed;
if (value.Post_timestamp != check) {
var newpost = 'y';
} else {
var oldpost = 'y';
}
if (newpost) {
$('#table2').append('<tr><td id="posttopic" colspan="2"><a href="forum24.php" id=' + posttimestamp + '>' + topic + '</a></td><td></td></tr><tr><td id=' + "post" + posttimestamp + '>' + posttimestamp + '</td><td id=' + "post" + posttimestamp + 'colspan="3">' + post_txt + '</td><td>' + postuser + '</td><td>' + breed + '</td></tr>');
}
$('#' + posttimestamp).click(function (e) {
e.preventDefault();
$('div.form').show();
}
$('#' + posttimestamp).live("click", function (e) {
e.preventDefault();
$('div.form').show();
}