当我将它绑定到类选择器时,我的成功回调没有触发。
班级实例:
<div id="entries">
...
<a href="/entries/user_tag_search?search=Fly+Tying" class="entry-ajax-tag-search" data-remote="true">Fly Tying</a>
...
</div>
回调定义:
$(function(){
$("#entries").on("ajax:success", ".entry-ajax-tag-search", function(){
$(".entries-accordion").accordion({ collapsible: true, active: false, heightStyle: 'content', event: "click keyup" });
})
})
远程ajax调用动态替换#entries
内容。
我对.on
的理解是,它会从包含的元素中捕获ajax:success
,并且#entries`是静态的(在初始页面加载时可用,并且从不重写)绑定将持续存在。
我可以回到.bind
,但我想知道为什么在我做之前这不起作用。
我不知道它是否相关,但回调确实显示在chrome调试器的链接上。
提前致谢。
答案 0 :(得分:1)
我有同样的情况,“#entry”永远不会动态替换,但on
没有绑定我的元素。我找到的解决方案(不使用bind
)是将on
附加到document
$(document).on("ajax:success", "#entries .entry-ajax-tag-search", function(){
...
})
答案 1 :(得分:0)
我无法让这个工作,我相信这是jquery_ujs
的一个问题,但我没有挖到它。
我的工作是将js
处理程序中要执行的.on()
放入视图返回的html的<script> </script>
部分:
<div id="entries-accordion-for-subscription-<%= @current_subscription_id %>" class="accordion entries-accordion">
<%= render @entries %>
</div>
<script>
/* MAGICAL!!!!! DO NOT TOUCH!!!!!!!
This *usually* works, although it appears to be DOM loading sensitive once in a while. */
$(".entries-accordion").accordion({ collapsible: true, active: false, heightStyle: 'content', event: "click keyup" });
</script>
不漂亮,但现在已经完成了工作。
我希望这会有所帮助。