私はそのような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)
2回目にクリックすると、1回目と2回目が通過し$(this)
ます。同様に、別のアイテムを3回クリックすると、3つすべてをパスしようとします。
どういうわけかそれはキャッシング$(this)
です。それと同じくらいクレイジーです。そして、メソッドが再度渡されるたびにそれを渡します。
関数として削除を確認すると、ポップアップが作成され、最初にクリックしたリンクのメソッドが変数として渡されますobj
。
次に、[確認]をクリックすると、次のようになります。
$(".confirm-deletion").live("click", function(){
action.call(obj);
$(this).parents("#delete-message").fadeOut();
return false;
});