2011-03-31 99 views
1

我们有2个问题与jquery。请看看下面...jquery tr id选择

我们使用下表:

<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)而不是第5行的正确值?
  2. 我们应该使用jQuery代码上的每个函数吗?如果是的话,我们该怎么做?

感谢您的支持。

回答

1

更新

重新下方的评论:

我询问了每个功能,因为我使用jQuery的排序和分页为100行和删除按钮第10行,但之后的伟大工程它改变URL以#

那是因为你只挂钩是已经存在行当p年龄被加载。如果你改变你的代码使用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使用文档的根,delegate使用您指示使用的任何内容)。有关详细信息,请参阅链接的文档。如果您可以使用植根于容器表中的delegate,则优先于live


原来的答复

attr是给你正确的值( “行5”)。如果你想只提取“5”从这一点,你可以用substring

id = id.substring(4); 

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


题外话:您还可以通过使用closest而不是parents保存浏览器中的一些工作。

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

几乎正确,您必须使用'id.substr(3);',因为索引从0开始,子字符串函数在js中称为substr。 – ntziolis 2011-03-31 11:51:41

+1

@ntziolis:JavaScript有'substring'和'substr'('substring'是from/to,'substr'是from/length)。这两种情况下的“from”都是从零开始的,所以我们在这种情况下需要'4'而不是'3'(因为我们想从第五个字符开始,而不是第四个字符):http://jsbin.com/ekuhi4 – 2011-03-31 11:55:05

+0

@TJ Crowder thx的子字符提示,是的,你是对的4是正确的索引开始,男人我的计数已经好一次;) – ntziolis 2011-03-31 11:57:02

5

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

2 - 没有必要,因为你是选择行是最接近父行的点击锚。

+0

或者只是使用'$(this).closest(“tr”)。attr(“id”)。substr(4);' – ntziolis 2011-03-31 11:52:33

+0

我赞成'split'方法, - 使用它并不是真正的杀手理由,但这只是我的偏好。 – karim79 2011-03-31 11:55:31

+0

谢谢你的回答,我问了每个函数,因为我使用的jQuery排序和分页100行和删除按钮伟大的前10行,但之后,它将网址更改为#。 – seoppc 2011-03-31 12:06:55