jquery history.pushState脚本仅在第一次使用时有效
我试图在使用ajax分页的基础上,使用pushState更新url。我遇到的问题是它只在第一次执行 我的完整设置如下所示 第3.2条, Jquery, 卡米纳里(分页宝石) 下面是我用来更新url的代码jquery history.pushState脚本仅在第一次使用时有效,jquery,ruby-on-rails-3.2,pagination,coffeescript,Jquery,Ruby On Rails 3.2,Pagination,Coffeescript,我试图在使用ajax分页的基础上,使用pushState更新url。我遇到的问题是它只在第一次执行 我的完整设置如下所示 第3.2条, Jquery, 卡米纳里(分页宝石) 下面是我用来更新url的代码 jQuery -> $(".pagination a[data-remote=true]").on 'click', (e) -> e.preventDefault() history.pushState {}, '', $(this).attr("href")
jQuery ->
$(".pagination a[data-remote=true]").on 'click', (e) ->
e.preventDefault()
history.pushState {}, '', $(this).attr("href")
在show.js.erb上,更新我使用的内容
$("#reviews").html('<%= escape_javascript render("review") %>')
$("#paginator").html('<%= escape_javascript(paginate(@reviews, :remote => true).to_s) %>');
$(“#评论”).html(“”)
$(“#paginator”).html('true.to_s)%>);
该剧每次都能上映,但第一个剧本只在第一次上映
如果我在生成的脚本上放置断点,我可以看到第一次调用脚本的时间,它可以工作,但之后就再也不会调用它了,我想好像有某种解除绑定的情况一样。尝试:
history.pushState 'data', '', $(this).attr("href")
可能所有
.pagination a[data remote=true]
链接都位于#paginator
容器中,内容在show.js.erb
中更新。在html替换之后,您需要在方法上使用重复绑定,或者只是从父容器中删除事件处理程序
使用jquery ujs,我会这样做:
在show.html.erb中:
<div id="content">
<div class="paginator">
<%= paginate @mydata, remote: true %>
</div>
<div id="mydata">
<%= render partial: 'mydata' %>
</div>
<div class="paginator">
<%= paginate @mydata, remote: true %>
</div>
</div>
在show.js.erb中:
$('div#mydata').html('<%= j render partial: 'mydata' %>');
$('div.paginator').html('<%= j(paginate(@mydata, :remote => true).to_s) %>');
$('div#mydata').html(“”);
$('div.paginator').html('true.to_)%>');
在application.js中:
$('div#content').on('click', '.pagination a[data-remote=true]', function() {
history.pushState(null, '', $(this).attr("href"))
});
$(window).on('popstate', function () {
var remoteUrl = "<a href='" + document.location.href + "'" + " data-remote='true'></a>"
$.rails.handleRemote( $(remoteUrl) );
});
$('div#content')。在('click','上。分页a[data remote=true],函数(){
history.pushState(null,,$(this.attr(“href”))
});
$(窗口).on('popstate',函数(){
var remoteUrl=“”
$.rails.handleRemote($(remoteUrl));
});
$('div#content').on('click', '.pagination a[data-remote=true]', function() {
history.pushState(null, '', $(this).attr("href"))
});
$(window).on('popstate', function () {
var remoteUrl = "<a href='" + document.location.href + "'" + " data-remote='true'></a>"
$.rails.handleRemote( $(remoteUrl) );
});