我在数据库中查找结果时通过jQuery添加表和原始数据,并在找不到任何内容时删除表。它工作正常。
$("#AdminSearch").bind("change keyup", function() {
var url = "http://localhost/PmMusic/index.php/admin/ajax/admin_search/"+$("#AdminSearch").val();
$.getJSON(url,function(data){
if (data.length == 0)
{
$("#AutoSearch").hide(1000);
$("#AutoSearchTable").remove();
}
else
{
$("#AutoSearchTable").remove();
$("#AutoSearch").append('<table id="AutoSearchTable">');
for(var i = 0;i < data.length && i < 5;i++)
{
$("#AutoSearchTable").append('<tr><td id="TableSearchTR'+i+'" value="'+data[i]+'">'+data[i]+'</td></tr>');
}
$("#AutoSearch").append('</table>');
$("#AutoSearch").show(1000);
}
});
});
但是当我想通过以下代码选择tr
$('tr').click(function(){
alert("Hi");
});
当我点击页面中的其他表格时,它可以工作,但是它不能选择由上层代码添加的tr。 问题出在哪里?
答案 0 :(得分:4)
您需要使用.live()或.delegate()将点击事件附加到动态创建的元素。
$("#AdminSearch").delegate("tr","click",function() {
alert("Hi");
});
答案 1 :(得分:2)
那是因为你与.click绑定,只适用于页面中已有的元素。
将您的代码更改为
$('tr').live('click', function(){
alert("Hi");
});
答案 2 :(得分:0)
如果添加.click()函数时TR不存在,则不会附加点击事件。你应该看一下使用.delegate()函数。
答案 3 :(得分:0)