Javascript或jQuery正在缓存我的javascript变量。我该如何重置?

时间:2012-04-05 13:18:25

标签: javascript jquery

我有一个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;
    });

2 个答案:

答案 0 :(得分:1)

不,这肯定不是疯狂的缓存。阅读https://developer.mozilla.org/en/JavaScript/Reference/Operators/this并重写confirm_delete和/或deleteFunction

我非常确定您需要将$(this)放入点击处理程序闭包中的缓存值,然后在deleteFunction中使用它。

答案 1 :(得分:1)

每次用户点击“delete_task”时,您都会向元素“confirm-deletion”添加点击事件。这就是为什么click事件多次触发,它实际上已被多次添加。