【发布时间】:2012-03-23 02:54:48
【问题描述】:
我想删除 HTML 表格行中显示的一些数据(首先在数据库中,然后从 HTML 表格中删除)。我已经为每个 HTML 表格行添加了一个删除链接,当点击这个链接时,我想首先制作一个 jQuery $.get 来更新数据库,如果返回成功,那么我想要删除 HTML 行。我已经让每个部分分别成功地工作,但是当我尝试组合它们时,我遇到了麻烦。合并后,进行 AJAX 调用以更新数据库的部分可以工作,但执行 $(this).remove() 的部分不能工作。我可以看到,在调用 $(this).remove() 的那一刻,$(this) 的值指的是 $.get,当我知道我需要它来指代“.delete_link”时。但我不知道如何改变这一点。显然,我正在为 jQuery 的一些基础知识而苦苦挣扎。我尝试将每个部分分解为组件函数,但这似乎使事情变得更糟。
$(document).ready(function() {
$(".delete_link").click(function () {
if (confirm('Are you sure???')) {
$.get("/comments/ajax-delete-comment?comment_id=4220537", function(response) {
if (response == 1) {
alert("Couldn't update database");
} else {
$(this).closest('tr').fadeTo(400, 0, function () {
$(this).remove();
});
}
});
return false;
}
return false;
});
});
【问题讨论】:
-
旁白:您可能希望将
data选项/参数与$.get一起使用,而不是在URL 中使用查询字符串。 -
在回调内部,
this与外部不同。 -
$(this) doesn't work in a function 的完全重复 - 这个问题已经被问过无数次了。
-
在
$.get()调用之前设置var cLink = $(this);,并在回调中使用cLink.closest(...)和cLink.remove();。 -
@RobW 相信我,我搜索过。知道正确的关键字是解决方案的一部分。我不是一个懒散地问问题或浪费人们时间的人。
标签: jquery