我正在创建一个动态表,并希望通过单击具有动态创建的id的<a>
元素来显示表单。我能够显示表单的唯一方法是将click事件中的选择器设置为表id(#table 2),但我不明白为什么我不能更具体地执行它。
$.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();
}
答案 0 :(得分:0)
尝试更改
$('#' + posttimestamp).click(function(e) {...})
到
$('#' + posttimestamp).live("click", function(e) {...})
您可能遇到过jQuery尝试将click事件绑定到尚未存在于DOM中的.append()
ed表单元格的情况。使用.live()
会将click事件绑定到现在或将来存在的元素。
使用表ID作为选择器的原因是,当您调用.click()
时,该表肯定已存在于DOM中。
答案 1 :(得分:0)
$('#' + posttimestamp).live("click", function (e) {
e.preventDefault();
$('div.form').show();
}