0

我希望有人可以在这里帮助我,因为我无法弄清楚这一点。我有一张显示用户名的表格。当我单击 TR 行时,它通过 ajax 请求将信息获取到 PHP 页面,该页面从 SQL 获取内容并将其传递给表单。

当表单被更新并保存时,会发生相反的情况,通过 ajax 发送到 PHP 页面,女巫会更新 SQL。

然后,当更新完成后,我希望列表自行更新而不刷新页面。我得到了这个工作。它通过 ajax/php 从数据库中获取新保存的内容,然后使用 .append 填充表。

但问题是当表格更新时,无法再在表格中选择 TR。

这可能是令人困惑的解释..

我检查了更改前后 DOM 的外观(使用 Coda/DOM 树),至少在我看来它们是相似的:

操作前:

<table id="brukere" cellpadding="8"> 
<thead>
    <tr><td>Brukernavn</td></tr></thead>
<tbody> 
<tr id="1" onmouseover="changebgcolor(this)" onmouseout="restorebgcolor(this)"     style="background-color: white; ">
    <td>Name 1</td>
</tr>
<tr id="2" onmouseover="changebgcolor(this)" onmouseout="restorebgcolor(this)" style="background-color: white; ">
    <td>Name 2</td>
</tr>    
</tbody> 
</table>

操作后:

<table id="brukere" cellpadding="8"> 
<thead>
    <tr><td>Brukernavn</td></tr></thead>
<tbody> 
<tr id="1" onmouseover="changebgcolor(this)" onmouseout="restorebgcolor(this)">
    <td>Name 1</td> 
</tr>
<tr id="2" onmouseover="changebgcolor(this)" onmouseout="restorebgcolor(this)">
    <td>Name 2</td> 
</tr>
</tbody> 
</table>

在操作 DOM 以选择 TR 之前,我正在使用该工作的代码是:

$("#brukere tr")
      .click(function() {

要刷新表格,我首先清除 TR:

$("#brukere").find("tr:gt(0)").remove();

然后追加,新的内容(数据)来自 PHP 文件中的 HTML:

$("table tbody").append(data),
4

1 回答 1

4

好吧,当你这样做的时候

$("#brukere").find("tr:gt(0)").remove();

您删除tr, 连同它的点击处理程序。因此,您要么需要在之后附加一个新的单击处理程序(到新插入的元素),要么需要在未删除的元素上使用委托,例如:

$("#brukere").on('click', 'tr', function() {...});

这会将click处理程序附加到#brukere表。但是,只有当点击来自 child 时,才会执行匿名函数tr。而且由于您永远不会删除表格本身,因此该单击处理程序永远不会被删除。

于 2013-04-04T17:58:15.723 回答