jquery - 在 Rails 中使用 PJax 加载 Doc Ready 上的所有 jQuery 变量

标签 jquery ruby-on-rails ajax pjax

我已经在这个论坛和互联网上搜索了这个问题的答案,但我似乎找不到正确的解决方案/我完全不明白......

我之前设置了一个 Rails 应用程序来展示一个简单的幻灯片。在此,我使用 jQuery 通过移动容器来显示下一张“幻灯片”。然后我决定实现 pxax 来仅加载产量而不是整个页面。除了我的 jQuery 之外,所有这些都工作正常。我看到,如果您添加事件再次触发的 on() 委托(delegate),但是像 window = $(window) 和 div = $(div) 这样的初始变量不再起作用。

$(function() {

var presentation_carousel = $('.carousel')
var carousel_width = $(".slide").length * 700;
var carousel_max_next = ((carousel_width - 700) * -1);

var view_window = $(window);
var nav_collapse = $('div.nav-collapse');

presentation_carousel.css('width', carousel_width+"px")

$('.button_next').on ('click', function(e) {
    $('.button').animate({
        opacity: 0
    }, 100)
    presentation_carousel.animate({
        'marginLeft' : "-=700px"
    }, 500, function(){
        $('.button').css('display', 'block');
        $('#quiz_carousel .button_next').css('display', 'none');

        $('.button').animate({
            opacity: 1
        }, 500)
    })
});

具体来说,presentation_carousel div 的动态调整大小不再被触发。我还看到,如果我在文档就绪标签中添加标准 console.log,它就不再被触发?

如果有人可以解释 pjax 如何与标准 jQuery 一起工作,并且如果有人可以帮助我解决我的代码,那就太好了?

我确实通过不使用函数内部的变量并每次都跨越 dom 来使一切正常工作。但这感觉有点 hacky...例如

presentation_carousel.animate({}) 
// became
$('.carousel').animate({}) 

非常欢迎对此提供任何帮助或建议。我是 Rails 新手,并且始终乐于接受有关干燥和改进 jQuery 的建议。

谢谢

编辑: 从布局中的 application.html.erb 中调用。这是唯一调用yield 的地方,它位于主容器div 内。

<div class="span9">
  <div data-pjax-container>
    <%= yield %>
  </div>
</div>

最佳答案

内置jquery-pjax events可能就足够了。 $(document).on("pjax:end", handler) 大致相当于 $(document).ready(handler)。当然,您仍然需要用于初始页面加载的就绪处理程序。 ;)

关于jquery - 在 Rails 中使用 PJax 加载 Doc Ready 上的所有 jQuery 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349407/

相关文章:

javascript - 无法使用ajax加载c3图形数据

javascript - PHP 函数未通过 ajax 调用

ruby-on-rails - 设计Rails应用程序: single table inheritance?

ruby-on-rails - ActiveModel::UnknownAttributeError: PaperTrail::VersionAssociation 的未知属性 'foreign_type'

jquery - Uncaught ReferenceError : jQuery22303175114964962158_1470743444495 is not defined in JSONP AJAX request

javascript - 在设定的时间后运行函数

javascript - 如何使用ajax和$.post获取php页面中的参数

javascript - 为 jQuery 替换 $ - .addClass 方法

php - 使用 JQuery 时是否有更好的方法来检查过期的 SESSIONS?

ruby-on-rails - ruby : Mechanize cannot find any content from the site what i want to check