JQuery,在表格单元格上冒泡。如何确定单击哪一行

时间:2009-06-30 15:59:22

标签: javascript jquery events

我有一个看起来与此类似的div的表.......

<div id="records">

10 | text1 | Delete
23 | test2 | Delete
24 | text3 | Delete
32 | text4 | Delete

</div>

我想制作“删除”可点击的,它可以调用ajax脚本将其从数据库中删除。

每个'删除'都有一个类“delete_record”

该表由ajax脚本填充,所以为了避免重新绑定问题,我想在“记录”上使用事件冒泡,所以我在div“记录”上添加了一个click事件,在这里我检查“delete_record”,目前只有一个警报,似乎有效..

$('#records').click(function(event)  {
    if ($(event.target).is('.delete_record'))  {
        alert("clicked on CELL");
    }
});

但我真正想要的是访问ajax脚本知道的record_id,并将其传递给ajax脚本以删除记录。 我知道如何用正确的值来调用这个ajax脚本,我不知道该怎么做就是弄清楚如何获取这条记录_id

10 | text1 | Delete(20389)
23 | test2 | Delete(37474)
24 | text3 | Delete(2636)
32 | text4 | Delete(83731)

所以当我点击第二行时,脚本会调用....

$.getJSON("/ajax/delete_record.php",{id: 37474, ajax: 'true'}, function(j){ stuff }

1 个答案:

答案 0 :(得分:2)

你说这个表是从ajax填充的,所以,你可以将你的元数据存储到表中,假设生成了以下html:

<tr>
    <td>23</td>
    <td>test2</td>
    <td><a>Delete</a></td>
    <td class='id'>37474</td> <!-- Hide the id column in css if needed -->
</tr>

所以,只要按照你所做的那样,如果单击'单元',那么你只需返回它的父元素然后查找td.hasClass('id')并获取其中的文本。像:

var parentTR = $(event.target).parent('tr'); // Get the parent row
var id = $("td[class='id']", parentTR).html(); // Retrieve the id content

现在你有了id,你可以把它变成服务器来删除它。

还有一件事要补充,我真的不同意桌子上的事件绑定或父div找到删除按钮,这听起来对我来说太间接了。 JQ实际上为活动绑定事件提供了一个很好的方法,试着看Live Function in JQuery。它确实为你的情况做得很好。