Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Ajax加载评估javascript代码_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 3 - Fatal编程技术网

如何使用Ajax加载评估javascript代码

如何使用Ajax加载评估javascript代码,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,我们已经测试了自定义ajax导航,现在我们使用TurboLink,但他不支持IE8和IE9。所以现在我们想使用wiselinks,它有一个兼容的完整浏览器 但是我们很难在每个页面之间执行Javascript代码 代码如下: application.js //= require jquery //= require jquery_ujs //= require jquery.role //= require wiselinks //= require_tree ../.. //= require_

我们已经测试了自定义ajax导航,现在我们使用TurboLink,但他不支持IE8和IE9。所以现在我们想使用wiselinks,它有一个兼容的完整浏览器

但是我们很难在每个页面之间执行Javascript代码

代码如下:

application.js

//= require jquery
//= require jquery_ujs
//= require jquery.role
//= require wiselinks
//= require_tree ../..
//= require_self

var startSpinner, stopSpinner;

startSpinner = function() {
  $('#loading-indicator').show();
};

stopSpinner = function() {
  $('#loading-indicator').fadeOut();
};

$(document).ready(function() {
  window.wiselinks = new Wiselinks($('#PageContainer'));
  $(document).off('page:loading').on('page:loading', function(event, $target, render, url) {
    console.log("Loading: " + url + " to " + $target.selector + " within '" + render + "'");
    startSpinner();
  });
  $(document).off('page:redirected').on('page:redirected', function(event, $target, render, url) {
    return console.log("Redirected to: " + url);
  });
  $(document).off('page:always').on('page:always', function(event, xhr, settings) {
    console.log("Wiselinks page loading completed");
    stopSpinner();
  });
  $(document).off('page:done').on('page:done', function(event, $target, status, url, data) {
    console.log("Wiselinks status: '" + status + "'");
  });
  $(document).off('page:fail').on('page:fail', function(event, $target, status, url, error, code) {
    console.log("Wiselinks status: '" + status + "'");
  });
});
job.js:

$('@JRP').ready(function(){
    console.log('AVF');
    var $container = $("#component-view .list");
    $container.isotope({
        itemSelector: '.job',
        masonry: {
            gutterWidth: 0
        }
    });
    $container.toggleClass('grid').toggleClass('list').isotope( 'reLayout' ).isotope();
        // creates select dropdown

    $("#job-result-options-filter").click(function(e){

        $("#facetwrapper").slideToggle();
    });
    $("#job-result-options-filter").pageslide({ href: '#facets' });

    $('#toggle-sizes').click(function(){
        $container
                .toggleClass('grid')
                .toggleClass('list')
                .isotope('reLayout');
        return false;
    });

});
如果我对页面作业执行空白刷新,JS将被执行,但是如果我来自加载ajax的链接,JS将不会执行,错误日志中也没有任何内容

我如何调试这个?或者在呈现作业页面时找到执行JS的方法


这里使用了gem:

我的解决方案非常简单。这样做的目的不是在文档就绪时调用自定义代码。相反,将它们全部封装到jQuery函数中,然后在documentready和page:done时调用此函数

// You custom code
$.fn.my_app_init = function() {
 console.log('AVF');
 //...
 $('#toggle-sizes').click(function(){
 //...
};

$(document).ready(function() {
  $(document).my_app_init(); // Call this function
  window.wiselinks = new Wiselinks($('#PageContainer'));

  $(document).off('page:always').on('page:always', function(event, xhr, settings) {
    console.log("Wiselinks page loading completed");
    stopSpinner();
    $(document).my_app_init(); // Call this again on page change.
  });     
});

我不明白什么是
$('@JRP')
?我有一个jquery角色选择器,我想知道在元素上调用
ready()
是否有效。.ready()方法只能在与当前文档匹配的jQuery对象上调用,因此可以省略选择器。如果我这样做:$('@JRP').ready(函数(event,$target,status,url,data){通过一个空白刷新,JS会被加载和评估,但是ajax调用不会。gem的创建者告诉我使用page:done,而不是像我以前使用这个gem那样使用readyI-know
page:done
。我只是说了ready()根据文档,这是不合法的。然后在同一页上有两个文档就绪事件。