>我正在从远程数据库下载一个表,但是当我这样做时,我在对表中的行实现双击功能时遇到了问题。我能够对整个表执行双击功能,尽管仅使用表的 id $('#t01').dblclick(function(){
。我认为这是因为我正在为服务器端的表生成 html 文本。我尝试在客户端完全创建的 EditTable 上使用该功能,它工作正常。有谁知道我该如何解决这个问题?任何帮助将不胜感激!
网页代码:
<section class="main-section" id="service"><!--main-section-start-->
<div class="container">
<h2>Mapping</h2>
<div data-role="content">
<table id="t01">
</table>
<br>
<br>
<button data-role="button" id="upload">Upload</button>
<table id="EditTable">
<tr>
<td>1</td><td>One</td>
</tr>
<tr>
<td>2</td><td>Two</td>
</tr>
</table>
</div>
</div>
</section>
JavaScript 代码:
var trackID = new Array();
function onBodyLoad() {
$.ajax({
type: 'GET',
url: 'http://ec2*******************compute.amazonaws.com/downloadAdmin.php',
success: function (data) {
// document.getElementById("tblDiv").innerHTML = data;
var trackID=data.split(" ") ;
//alert(data);
printDatabase(trackID);
}
});
}
function printDatabase(trackID){
var tblText='<table style="width:100%"><tr><th style="text-align:center">Recent Journeys</th></tr>';
var len = trackID.length;
for (var i = 0; i < len; i++) {
tblText +='<tr id="''+trackID[i]+''"><td style="text-align:center">'
+ trackID[i] +'</td></tr>';
}
tblText +="</table>";
document.getElementById("t01").innerHTML =tblText;
}
$(document).ready(function() {
$('#t01 tr').dblclick(function(){
alert('Row dblclicked');
});
});
请替换
$('#t01 tr').dblclick(function(){
alert('Row dblclicked');
});
跟
$(document).on("dblclick","#t01 tr",function() {
alert('Row dblclicked');
});
要捕获在声明事件侦听器后创建的元素上的事件 - 您应该绑定到父元素或层次结构中更高级别的元素。你的表是在页面加载完成后动态创建的,jQuery 不知道它。
初始化双击的代码在创建元素后发生。仅仅在身体负荷之后是不够的 - 您的 AJAX 在这一点上仍然没有返回。
把
$('#t01 tr').dblclick(function(){
alert('Row dblclicked');
});
在 AJAX 成功函数中的 PrintDatabase() 函数调用之后。