私のようなAJAX呼び出しを持っている:JavascriptまたはjQueryがjavascript変数をキャッシュしています。これをリセットするにはどうすればよいですか?
$('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;
});
},
問題は、私はそれをクリックしたときに初めて、それが動作することです。 2回目にクリックすると、最初の$(this)
と2番目の$(this)
を通過します。同様に、3回目に別のアイテムをクリックすると、3つのアイテムがすべて試行されます。
何とかキャッシュ$(this)
です。それが狂っているように。メソッドが再度渡されるたびにそれを渡します。
関数として削除を確認すると、ポップアップが作成され、最初にクリックしたリンクのメソッドを変数obj
として渡します。
次に、あなたが確認]をクリックした場合には、このことを行います
$(".confirm-deletion").live("click", function(){
action.call(obj);
$(this).parents("#delete-message").fadeOut();
return false;
});
confirm_deleteとは何ですか? – Paulpro
もう少しコードを追加できますか?それは、毎回新しいクリックハンドラをバインドしているので、ハンドラが追加されるたびに鳴ります。それをクリックすると、すべてのクリックが発生します。 –