我有这样的 AJAX 调用:
$('a.delete_task').live('click', function() {
$this = $(this);
function deleteFunction(){
var obj = $this.parents('.task');
$(obj).addClass('highlighted');
$.post($this.attr('href'), { _method: 'delete' }, function(data) {
if ( $single_item_collection == true ) {
} else {
};
});
};
SSK.confirm_delete($this, deleteFunction, "task");
return false;
});
然后我把我deleteFunction()
的扔进delete_confirmation
:
$(function(){
window.SSK = new(Class.extend({
confirm_delete: function(obj, action, label){
$(".confirm-deletion").live("click", function(){
action.call(obj);
$(this).parents("#delete-message").fadeOut();
return false;
});
},
问题是当我第一次点击它时它会起作用。当我第二次单击它时,它会通过第一个$(this)
和第二个$(this)
。同样,当我第三次单击另一个项目时,它会尝试通过所有三个项目,依此类推。
不知何故,它正在缓存$(this)
。多么疯狂。并在每次再次传递该方法时传递它。
确认删除作为函数会创建一个弹出窗口,并将您最初单击的链接的方法作为变量传递给它obj
。
然后,如果您单击确认它会这样做:
$(".confirm-deletion").live("click", function(){
action.call(obj);
$(this).parents("#delete-message").fadeOut();
return false;
});