我们遇到了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;
});
});
所以我们的问题是......
感谢您的支持。
答案 0 :(得分:5)
1 - var id = $(this).closest("tr").attr("id").split("-")[1];
2 - 不需要,因为您选择的行是与所单击锚点最接近的父行。
答案 1 :(得分:1)
<强>更新强>:
重新评论以下内容:
我询问了每个函数,因为我使用jquery sortable和分页100行,删除按钮适用于前10行,但之后它将url更改为#
那是因为你只是在加载页面时连接已经存在的行。如果您将代码更改为使用delegate
或live
代替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;
});
});
bind
(click
只是bind
)的快捷方式,将处理程序与已存在的元素挂钩。当您使用分页插件时,其他元素尚未存在,因此它们不会被连接起来。 delegate
和live
不同地工作:他们利用事件冒泡并将事件挂钩到容器元素上(live
使用文档的根目录{{ 1}}使用你告诉它使用的任何东西)。有关详细信息,请参阅链接的文档。如果您可以使用以容器表格为根的delegate
,请优先选择delegate
。
原始回答:
live
正在为您提供正确的值(“第5行”)。如果您只想从中提取“5”,则可以使用attr
:
substring
我没有看到你需要循环的任何地方。
偏离主题:您还可以使用closest
而不是id = id.substring(4);
来保存浏览器的一些工作。
parents