ajax成功事件不会触发动态添加的链接

时间:2014-10-03 14:01:38

标签: javascript jquery ruby-on-rails ajax

在我的rails 4应用程序中,我无法获得ajax"成功"事件触发使用jquery动态添加到页面的链接。我正在创建如下的标记并将其动态添加到页面中。

<a data-confirm="Are you sure?" data-method="delete" data-remote="true" href="/mylink" rel="nofollow">delete</a>

以下操作触发:

$(document).on("ajax:success"

但是没有触发的版本和我想要使用的版本是:

$("a[data-remote]").on("ajax:success"

$(document)版本没有的情况下,知道为什么$("a[data-remote]")版本有效吗?为了澄清,当动态添加内容时,它不起作用。对于页面上已有的链接,它们可以很好地触发事件。

注意:Turbolinks已被删除。

1 个答案:

答案 0 :(得分:0)

这是因为.on()事件处理程序不处理动态添加的元素,除非你像这样指定它:

$(document).on('ajax:success', 'a[data-remote]', function(){});". 

适用于&#34; $(文件)&#34;因为事件处理程序在事件冒泡到它的父元素时捕获事件,在这种情况下&#39;文档&#39;。

您应该将事件处理程序添加到包含所有&#39; a [数据确认]&#39;的父元素。所以它不会过滤每个事件,或者您可以像上面的代码一样指定。

Here's more on event bubbling and capturing