我正在使用这个Jquery:
$('#resultstable').on('click', 'tbody tr', function() {
alert("helloworld")
$('#resultstable tr.Selected').removeClass('Selected');
$(this).addClass('Selected');
});
当点击时,应该将选定的类添加到TR。它还应该删除所选类的任何其他实例。 (一次只能选择一个TR)
正在制作此表:
<table id="resultstable">
<tr id="resultsheading">
<th OnClick="OrderBy(0)">Module<br /> Code</th>
<th OnClick="OrderBy(1)">RoomID</th>
<th OnClick="OrderBy(2)">Students</th>
<th OnClick="OrderBy(3)">Priority</th>
<th OnClick="OrderBy(4)">Weeks</th>
<th OnClick="OrderBy(5)">Day</th>
<th>Start Time</th>
<th>Length</th>
<th>End Time</th>
<th OnClick="OrderBy(6)">Date Added</th>
</tr>
<tbody>
<tr id= "192" >
<td>11COA121</td>
<td>CC012</td>
<td>340</td>
<td>Yes</td>
<td>All</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>2</td>
<td>0000-00-00 00:00:00</td>
</tr>
</tbody>
</table>
我还应该提到该表是动态的,当用户单击某个按钮(如编辑或删除)时,它将删除该行,然后使用此行重新加载表(例如删除行):
function DeleteRequest(ReqID)
{
//Ajax call for deleterequest
$.post("a/outputresults2.php", {DelRequest: ReqID} , function(data)
{
$('#resultstable').html(data);
});
}
此刻,它没有做任何事情,甚至没有通过,它没有提醒。有什么问题?
请注意,JS控制台上没有错误。
谢谢!
答案 0 :(得分:1)
我认为问题在于这一行
$('#resultstable').on('click', 'tbody tr', function() {
如果我理解正确,你输入的选择器会将事件处理程序附加到当前表内的tbody和tr元素,所以当你添加新的tr元素时,不会为新行触发事件处理程序。
你可以试试像
这样的东西$('#resultstable').on('click', function(event) {
if ($(event.target).is('tr') || $(event.target).is('tbody')) {
// ... do logic in here
}
});
基本上根据event.target属性将目标过滤到tr或tbody。
答案 1 :(得分:0)
使用此代码进行选择。
Se jsfiddle:http://jsfiddle.net/bouillard/fUntG/
答案 2 :(得分:0)
我怀疑你可能需要改变:
$('#resultstable').on('click', 'tbody tr', function() {
为:
$('#resultstable').live('click', 'tbody tr', function() {
所以它继续使用动态加载的数据。