我有一个使用AJAX删除的项目列表。
这个列表是一个简单的列表,其中包含div,每个div都是一个id,因此当从数据库中删除该项时,我返回true,然后删除该行。
这是我的代码:
HTML
<div id="row1">
<div>item1</div>
<div><a href="...">view</a></div>
<div><a id="1">delete</a></div>
</div>
JS
$('.delete').click(function () {
if (!confirm('Are you sure you want to delete?')) {
return false;
}
$.ajax({
type: "POST",
url: '/delete_record',
data: 'id=' + this.id,
cache: false,
success: function (result) {
if (result == 'good') {
$('#row' + this.id).remove();
}
}
});
});
由于某种原因,this.id
不起作用,因为this.id
未定义...为什么?我的href上有id="1"
。
答案 0 :(得分:14)
您使用的是指ajax对象,因为该函数中有一个新的范围。如果要在范围外访问变量,则必须在ajax调用之前声明它们。
$('.delete').click(function () {
if (!confirm('Are you sure you want to delete?')) {
return false;
}
var _this = this;
$.ajax({
type: "POST",
url: '/delete_record',
data: 'id=' + this.id,
cache: false,
success: function (result) {
if (result == 'good') {
$('#row' + _this.id).remove();
}
}
});
});
答案 1 :(得分:4)
您的ID不应以数字开头。以下是制定有效身份证明的方法:What are valid values for the id attribute in HTML?
成功回调函数中的 this
不会引用点击处理函数中的this
。因此,您需要在单击处理程序中引用this
,以便在回调函数中访问它:
$('.delete').click(function () {
if (!confirm('Are you sure you want to delete?')) {
return false;
}
var that = this;
$.ajax({
type: "POST",
url: '/delete_record',
data: 'id=' + this.id,
cache: false,
success: function (result) {
if (result == 'good') {
$('#row' + that.id).remove();
}
}
});
});
答案 2 :(得分:0)
尝试在$.ajax
$this
喜欢:
var $ this = this;
并使用变量。
$('.delete').click(function () {
var $this = this;
if (!confirm('Are you sure you want to delete?')) {
return false;
}
$.ajax({
type: "POST",
url: '/delete_record',
data: 'id=' + $this.id,
cache: false,
success: function (result) {
if (result == 'good') {
$('#row' + $yourid).remove();
}
}
});
});
答案 3 :(得分:0)
$('.delete').click(function () {
if (!confirm('Are you sure you want to delete?')) {
return false;
}
var id = this.id; // here is the magic
$.ajax({
type: "POST",
url: '/delete_record',
data: 'id=' + this.id,
cache: false,
success: function (result) {
if (result == 'good') {
$('#row' + id).remove();
}
}
});
});
答案 4 :(得分:-1)
我没有在你的html中看到任何带有'delete'类的元素。假设它是删除链接,您需要使用$(this).attr('id')
而不是this.id来获取ID。