我尝试ajax内部产量,所有工作正常,但当我实现ajax替换application.html.erb(布局)中的HTML时,ajax无法工作,不能替换html。
我的application.html.erb:
<li id="header_notification_bar" class="dropdown">
<a id="click_notif" data-toggle="dropdown" class="dropdown-toggle" data-remote="true" href="#">
<i class="fa fa-bell-o"></i>
<span id="notif_count" class="badge bg-warning"></span>
</a>
<ul id="notif_content" class="dropdown-menu extended notification">
</ul>
</li>
<script>
$(document).ready( function() {
$('#notif_content').html("<%=j render 'layouts/load_notif' %>");
$("#click_notif").click(function(){
$('#notif_count').html("<%=j render 'layouts/notif_count' %>");
});
});
</script>
如果ajax实现内部yield,控制器中的操作应该添加format.js
并使用action_name.js.erb
创建文件,但是如果在application.html.erb中我该怎么办???
请帮助我,谢谢
答案 0 :(得分:0)
你试过这个:
$(document).ready( function() {
$('#notif_content').html("<%=j render 'layouts/load_notif' %>");
$(document).on("click", "#click_notif", function(){
$('#notif_count').html("<%=j render 'layouts/notif_count' %>");
});
});
<强>代表强>
虽然你的问题很模糊,但你对ajax的典型问题是,因为你正在将新元素加载到DOM中,所以JS事件绑定器无法附加相应的事件
我不认为我编写的代码会开箱即用,但它基本上依赖于.delegate
原则 - 您选择“容器”元素,并委托事件
因为DOM加载时容器存在,这意味着您将能够使用新元素。你真的需要提供你的AJAX代码来帮助我们创建一个更好的答案