Jquery tr id选择

时间:2011-03-31 11:42:32

标签: jquery

我们遇到了jquery的2个问题。请看下面的内容......

我们正在使用下表:

<tr id="row-5">
  <td></td>
  <td><a class="delete" href="#">Delete</a></td>
</tr>

我们正在使用以下代码:

$(function () {
    $('.delete').click(function () {
        var id = $(this).parents("tr").attr("id");
        var info = 'id=' + id;
        $.ajax({
            type: "POST",
            url: "delete.php",
            data: info,
            success: function () {}
        });
        return false;
    });
});

所以我们的问题是......

  1. 我们如何获得id(5)而不是row-5的正确值?
  2. 我们应该在jquery代码上使用每个函数吗?如果是,我们该怎么做?
  3. 感谢您的支持。

2 个答案:

答案 0 :(得分:5)

1 - var id = $(this).closest("tr").attr("id").split("-")[1];

2 - 不需要,因为您选择的行是与所单击锚点最接近的父行。

答案 1 :(得分:1)

<强>更新

重新评论以下内容:

  

我询问了每个函数,因为我使用jquery sortable和分页100行,删除按钮适用于前10行,但之后它将url更改为#

那是因为你只是在加载页面时连接已经存在的行。如果您将代码更改为使用delegatelive代替click,则可以使用之后添加的新代码:

$(function() {
    // Change is +--- here
    //           V
    $('.delete').live('click', function() {
        var id  = $(this).closest("tr").attr("id");
        id = id.substring(4); // or .split('-')[1] as suggested by other answer
        var info = 'id='+id;
        $.ajax({
            type: "POST",
            url: "delete.php",
            data: info,
            success: function(){
            }
        });
        return false;
    });
});

bindclick只是bind)的快捷方式,将处理程序与已存在的元素挂钩。当您使用分页插件时,其他元素尚未存在,因此它们不会被连接起来。 delegatelive不同地工作:他们利用事件冒泡并将事件挂钩到容器元素上(live使用文档的根目录{{ 1}}使用你告诉它使用的任何东西)。有关详细信息,请参阅链接的文档。如果您可以使用以容器表格为根的delegate,请优先选择delegate


原始回答

live正在为您提供正确的值(“第5行”)。如果您只想从中提取“5”,则可以使用attr

substring

我没有看到你需要循环的任何地方。


偏离主题:您还可以使用closest而不是id = id.substring(4); 来保存浏览器的一些工作。

parents