使用此代码:
$("table > :not(thead) > tr.Selected").removeClass('Selected')
查找具有Selected类的所有表行并删除该类。
另外,使用此代码:
var ReqID = $("table > :not(thead) > tr.Selected").attr('id')
试图从已选择类的行中找到ID。
此代码完美无缺,直到使用AJAX重新加载表,然后它才停止工作,并且该行无效。
有什么想法吗?
Thankss!
修改
更多代码:
以下是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);
动态更改的表也称为resultstable
由于
答案 0 :(得分:2)
您可能需要使用实时点击事件来呼叫您事件,该事件正确绑定新加载的对象:
$('#my_trigger').live('click', function() {
.. some code
})
将有助于您了解有关使用此内容的确切方式的更多信息。
答案 1 :(得分:2)
我怀疑这可能是因为jQuery滥用了innerHTML
属性。当您尝试替换表时,您的“ajax”响应实际上会破坏现有的DOM结构。
要检查这是否是原因,您应该查看javascript控制台。尝试使用console.log()
检查您选择的元素是否确实存在。
答案 2 :(得分:0)
如果您尝试识别单击的行,则可以执行以下操作:
$('#resultstable').on('click', 'tbody tr', function() {
$('#resultstable tr.Selected').removeClass('Selected');
$(this).addClass('Selected');
});
您不再需要呈现onClick
个事件,而且可以摆脱function Selected(x)
编辑:您是否只是为了让一行处于编辑模式而渲染整个表?它不是很有效,但如果你这样做,那么你的jquery脚本可以简化为:
$('#resultstable').on('click', 'tbody tr', function() {
$.post('a/outputresults2.php', {editdynamic: this.id}, function(data) {
$('#resultstable').html(data);
});
});
答案 3 :(得分:0)
您可以通过将js复制到重新加载视图outputresults2.php
来解决此问题。在那条路上$(function(){})
再次触发。