Jquery不工作(也许AJAX重新加载 - 或者可能只是错误的语法?)

时间:2012-02-15 13:39:11

标签: php javascript jquery html ajax

我正在使用这个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控制台上没有错误。

谢谢!

3 个答案:

答案 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() {

所以它继续使用动态加载的数据。