Javascript jQuery事件委派&PJAX事件不起作用

Javascript jQuery事件委派&PJAX事件不起作用,javascript,jquery,ruby-on-rails,pushstate,pjax,Javascript,Jquery,Ruby On Rails,Pushstate,Pjax,我有一个Rails 3.2应用程序,带有用于显示水平导航菜单的菜单切换div。单击后退或前进按钮后,单击div将不再切换菜单。我曾尝试使用事件委派和pjax事件来解决这个问题,但似乎没有任何效果 当未使用事件委派和/或pjax事件时,该切换可在完全刷新和pjax请求上正常工作,但在后退/前进按钮上会中断。当我在不同的组合中添加委派或pjax事件时,就会出现问题。以下是我尝试过的几种不同的脚本。我得到了非常奇怪的结果,有时工作,而不是其他。。。我担心我可能没有正确地组合它们。这些都包装在特定视图上

我有一个Rails 3.2应用程序,带有用于显示水平导航菜单的菜单切换div。单击后退或前进按钮后,单击div将不再切换菜单。我曾尝试使用事件委派和pjax事件来解决这个问题,但似乎没有任何效果

当未使用事件委派和/或pjax事件时,该切换可在完全刷新和pjax请求上正常工作,但在后退/前进按钮上会中断。当我在不同的组合中添加委派或pjax事件时,就会出现问题。以下是我尝试过的几种不同的脚本。我得到了非常奇怪的结果,有时工作,而不是其他。。。我担心我可能没有正确地组合它们。这些都包装在特定视图上的脚本标记中,而不是在application.js中。谢谢你的帮助

一,。无活动授权,除后退/前进外有效

二,。对于事件委派,有时有效,从不用于后退/前进

三,。pjax:end事件在文档中就绪

四,。使用pjax:end-outside-document-ready


我将事件委托脚本移到了document ready中的application.js

$(document).ready(function(event) {

  $('body').on('click', '.menu-toggle', function () {
    $('.menu-toggle').toggleClass('menu-toggle-open');
    $('.menu-wrap').toggleClass('menu-open');
  });

});
$(document).ready(function() {
  $(document).on('click', '.menu-toggle', function () {
    $('.menu-toggle').toggleClass('menu-toggle-open');
    $('.menu-wrap').toggleClass('menu-open');  
  });
});
$(document).ready(function() {
  $('.menu-toggle').on('click', function () {
    $('.menu-toggle').toggleClass('menu-toggle-open');
    $('.menu-wrap').toggleClass('menu-open');    
  }); 


  $(document).on('pjax:end', function() {
    $('.menu-toggle').on('click', function () {
      $('.menu-toggle').toggleClass('menu-toggle-open');
      $('.menu-wrap').toggleClass('menu-open');
    });
  });
});
$(document).ready(function() {
  $(document).on('click', '.menu-toggle', function () {
    $('.menu-toggle').toggleClass('menu-toggle-open');
    $('.menu-wrap').toggleClass('menu-open');  
  });
});

$(document).on('pjax:end', function() {
  $('.menu-toggle').on('click', function () {
      $('.menu-toggle').toggleClass('menu-toggle-open');
      $('.menu-wrap').toggleClass('menu-open');
  });
});
$(document).ready(function(event) {

  $('body').on('click', '.menu-toggle', function () {
    $('.menu-toggle').toggleClass('menu-toggle-open');
    $('.menu-wrap').toggleClass('menu-open');
  });

});