0

我在我的 rails 项目中有 ajaxified 链接:

<%= link_to 'Click me!', some_url, remote: true %>

我添加了钩子来监听 ajax 事件:

$(function(){
  $(document).ajaxSend( function(){$('#busy').show()} )
  $(document).ajaxComplete( function(){$('#busy').hide()} )
})

这在 FF 中按预期工作。

在 Chrome 中,#busy当发送 ajax 请求时,div 会按预期显示,但是当请求到达时,Chrome 会变为空白,并且控制台会显示一条长长的 javascript 错误消息:

jQuery.event.dispatch
elemData.handle.eventHandle
jQuery.event.trigger
(anonymous function)
jQuery.extend.each
jQuery.fn.jQuery.each
jQuery.fn.extend.trigger
... (several hundred lines of pretty much the same stuff)

为什么 Chrome 对似乎是简单添加事件处理程序的东西嗤之以鼻?

4

1 回答 1

0

我知道这不能直接回答您的问题,但是在此页面上很好地捕获了处理 ajax 事件的 rails 方式:https ://github.com/rails/jquery-ujs/wiki/ajax

这可能与事件向上传递的方式有关。

<%= link_to 'Click me!', some_url, remote: true, id: 'clickable' %>

$('#clickable').on('ajax:beforeSend', function(event, xhr, settings) {
  $('#busy').show()
});

$('#clickable').on('ajax:complete', function(event, xhr, settings) {
  $('#busy').hide()
});
于 2013-11-21T16:32:16.140 回答