在网页中使用 jQuery 1.9.1 并进行 AJAX 调用以返回 XML 数据集。数据被加载到 HTML 表中的行中。前 2 列包含文本信息,第 3 列可以包含以下三项之一:下拉框、提交按钮或文本。第 4 列包含提交按钮(在有下拉菜单的行上)或为空白。
HTML表格如下:
<table id="ztable" border="1" cellpadding="1" cellspacing="1">
<thead id="zthead">
</thead>
<tbody id="ztbody>
</tbody>
</table>
数据在逐行循环的函数中加载到表中。
var trow = $("<tr class='rows'>"), tbdy=$("#ztbody");
.....
$(xml).find("Row").each(function(index) {
celldata = "<td class='msgTime'><div class='msgTime " + msgClass + "'>" + msgTime + "</div></td>" +
....
"<td class='action'><div class='action " + msgClass + "'>"+ actionDD +"</div></td>" +
....
$(celldata).appendTo(trow);
trow.appendTo(tbdy);
当页面第一次加载时,所有的鼠标事件、单击事件和更改事件都会按应有的方式触发。
然而,一旦他们被解雇,我设置了一个强制重新创建 HTML 表的开关。但是,一旦执行完毕,下拉菜单仍然存在并且可以打开,但没有任何内容可供选择。没有按钮响应,没有鼠标事件触发。
我正在调用我第一次用来构建表的相同函数,但使用 a$("ztable tbody).empty()
来清除那里的内容并重新创建它。我知道何时重新创建表,无论我在第一个表加载时所做的任何处理都已发生并且这些行不再显示,但重新创建的表 - 具有适当的列、下拉列表、按钮等 - 将允许打开下拉菜单(并且可以选择一个项目),但没有其他任何东西触发 - 没有鼠标事件,什么都没有。
为了将控件绑定到重新创建的页面需要发生什么?还是我做错了什么?
***编辑** *
根据后续行动,我正在编辑并提供有关处理程序的更多信息。所有这些都在$(document).ready
:
$(".choices").mousedown(function() { console.log("mousedown"); })
$(".choices").mouseover(function() { console.log("mouseover"); })
$(".choices").mouseout(function() { console.log("mouseout"); })
$(".choices").mouseup(function() { console.log("mouseup"); })
....
$(".rows").each(function() {
var $d = $(this).find(".choices");
$d.change(function() {
if ($d.val() > 0) {
..... do stuff where dropdown has been selected
}
});
});
$(".sBtn").click(function() {
..... do stuff where one type button was clicked
});
$(".rbtn").click(function() {
.... do stuff where another type button was clicked
});
.choices
是分配给SELECT
下拉菜单的类。
.rows
是分配给 中的行的<tbody>
类ztable
。
.sBtn
是分配给按钮的类,该按钮将位于第 4 列并与第 3 列中的下拉框相关联。
.rbtn
是分配给将在第三列中的按钮的类。
每个按钮和下拉菜单都有一个唯一的 ID,例如: choice_M_40
&sb_M_40
将在第 1 行。 choice_M_45
&sb_M_45
将在第 2 行。rb_X_3000
将在第 3 行的第 3 列,等等。