【发布时间】:2013-08-29 17:12:10
【问题描述】:
我们测试了一个自定义的 ajax 导航,现在我们使用 Turbolinks 但他不支持 IE8 & 9。所以现在我们想使用兼容完整浏览器的 wiselinks。
但是我们很难在每个页面之间执行 Javascript 代码。
这里是代码:
应用程序.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;
});
});
如果我对页面 Job 进行空白刷新,则执行 JS,但如果我来自加载 ajax 的链接,则不会执行 JS,并且我的错误日志中没有任何内容。
我如何调试这个?还是在渲染作业页面时找到执行JS的方法?
【问题讨论】:
-
我不明白
$('@JRP')是什么? -
这是一个 jquery 角色选择器,我有我想知道在元素上调用
ready()是否有效。 .ready() 方法只能在匹配当前文档的 jQuery 对象上调用,所以选择器可以省略。 api.jquery.com/ready如果我这样做: $('@JRP').ready(function(event, $target, status, url, data) { 刷新空白,JS 被加载和评估,但ajax 调用不是。gem 的创建者告诉我使用 page:done,而不是 ready我知道page:done,因为我以前使用过这个宝石。我刚刚说过,根据文档,ready() 的使用是不合法的。然后,您在同一页面上有两个文档就绪事件。
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3