2016-01-21 147 views
0

有没有办法删除使用jQuery的ajaxSuccess创建的监听器?有没有办法删除用ajaxSuccess创建的监听器?

我会感兴趣的是删除恰好指定给变量的侦听器,或者删除所有现有的ajaxSuccess侦听器的方法。

另一个角度可能是追溯导致问题“成功”的请求的方式,以及元素相关事件触发该请求的方式;理想上类似于“普通”事件监听器中的event.target属性。看来ajaxSuccess'event参数是一个不同的动物物种,并没有target财产和没有preventDefault方法。许多投手,一个捕手,但没有捕手识别。也许除了ajaxSuccess之外还有一个工具?但愿不是从零开始做饭的jQuery .ajax其他...

+0

灿创建jsfiddle http://jsfiddle.net来演示?预期的结果是什么? – guest271314

+2

不会做任何好事来尝试阻止ajaxSuccess回调中的元素事件...事件将会很长时间完成。你到底需要做什么? – charlietfl

回答

2

我有兴趣在任何办法来消除这种情况发生 被赋给变量听众,或办法来消除所有现存 的ajaxSuccess听众

尝试使用.off()

$(document).off("ajaxSuccess") 
+0

这实际上工作!我猜jQuery AJAX事件至少有一件事与元素事件有共同之处。 – Lori

1

有元素的事件和Ajax等比开发人员使用没有关系做ajax电话。

然而,您可以修改xhr对象,同时设置每个请求并访问ajaxSuccess回调中的特定属性。这些可以是帮助您管理应用程序的任意属性和值。例如,如果你想要一个实际的元素事件传递给回调

您也可以检查设置对象将包含URL和使用的条件代码

简单的例子:

$.ajax({ 
    url:'...', 
    beforeSend:function(xhr){ 
     xhr.myData = 'some value'; 
    } 
    ... 
}); 

$(document).ajaxSuccess(function(event, xhr, settings) { 
    console.log(xhr.myData); 
}) 
+0

如果元素事件名为'.ajax()'可以在'beforeSend'内设置'context'到'event.target',将'this'设置为'event.target':触发'$ .ajax( )''.done()','.fail()' – guest271314

+0

@ guest271314好想法。许多方法来解决这个 – charlietfl

+0

所以'beforeSend'可以添加属性到什么成为'.ajaxSuccess'的'xhr'参数?在使用'window'的属性作为一种全局变量的意义上,这被认为是kludgey吗?看起来好像'beforeSend'是设计中的数据传输设备,所以可能不是。这个特殊的技巧不会帮助我的情况(我认为),因为AJAX调用通过使用'/ something.json'(Rails路由)作为jQuery API自动填充字段的'source'来启动。 – Lori