jquery history.pushState脚本仅在第一次使用时有效

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")

我试图在使用ajax分页的基础上,使用pushState更新url。我遇到的问题是它只在第一次执行

我的完整设置如下所示

第3.2条, Jquery, 卡米纳里(分页宝石)

下面是我用来更新url的代码

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) );
});