使用此代码:
$("table > :not(thead) > tr.Selected").removeClass('Selected')
查找具有类Selected的所有表行并删除该类。
另外,使用此代码:
var ReqID = $("table > :not(thead) > tr.Selected").attr('id')
它正在尝试从已选择类的行中查找ID。
这段代码可以很好地工作,直到使用AJAX重新加载表,然后它全部停止工作,这一行也不起作用。
有什么想法吗?
谢谢!
编辑
更多代码:
这是AJAX调用:
function EditRequest()
{var ReqID = $("table > :not(thead) > tr.Selected").attr('id')
alert(ReqID);
$.post("a/outputresults2.php", {editdynamic: ReqID} , function(data){
$('#resultstable').html(data);
});
}
function Selected(x)
{
$("table > :not(thead) > tr.Selected").removeClass('Selected')
$('#'+x).toggleClass('Selected');
}
以下是php,它输出原始文件和AJAX后更新的表:
if($RequestID == $ID){
$requestrows.="
<tr id='"$RequestID'" onClick='"Selected($RequestID)'" class='"Selected'" >
<td><input type='"text'" id='"MCode'" value='"$ModCode'"></td>
<td><input type='"text'" id='"RName'" value='"$RoomName'"></td>
..etc etc etc
</tr>";
}
}
if($RequestID != $ID){
$requestrows .=
" <tr id= '"$RequestID'" onClick='"Selected($RequestID)'" >
<td>$ModCode</td>
<td>$RoomName</td>
... etc etc etc
</tr>";
}
}
echo($requestrows);
动态更改的表也被称为结果稳定
感谢
您可能需要调用带有实时点击事件的事件,该事件可以正确绑定新加载的对象:
$('#my_trigger').live('click', function() {
.. some code
})
这将有助于从你那里获得更多关于你使用它的确切方式的信息。
查看jquery实时文档
我怀疑这可能是因为jQuery滥用了innerHTML
属性。当您试图替换表时,您的"ajax"响应实质上破坏了现有的DOM结构。
要检查这是否是原因,您应该查看javascript控制台。尝试使用console.log()
检查您选择的元素是否真的存在。
如果您试图识别单击的行,可以执行以下操作:
$('#resultstable').on('click', 'tbody tr', function() {
$('#resultstable tr.Selected').removeClass('Selected');
$(this).addClass('Selected');
});
您不再需要呈现onClick
事件,并且可以摆脱function Selected(x)
edit:渲染整个表只是为了让一行处于编辑模式吗?它不是很有效,但如果你这样做,那么你的jquery脚本可以简化为:
$('#resultstable').on('click', 'tbody tr', function() {
$.post('a/outputresults2.php', {editdynamic: this.id}, function(data) {
$('#resultstable').html(data);
});
});
您可以通过将js复制到重新加载视图outputresults2.php
来解决此问题。这时$(function(){})
再次触发。