jquery有两个问题。请看下面的..。
我们正在使用下表:
<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;
});
});所以我们的问题是..。
多谢你们的支持。
发布于 2011-03-31 11:45:24
更新
关于您的意见如下:
我询问了每个函数,因为我对100行使用jquery和分页,删除按钮对前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使用文档的根,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;
});
});发布于 2011-03-31 11:45:28
1- var id = $(this).closest("tr").attr("id").split("-")[1];
2-不需要,因为您选择的行是与单击锚最近的父行。
https://stackoverflow.com/questions/5499258
复制相似问题