当我跟随 link 进入我的 rails 应用程序中的页面时,jQuery 选项卡不起作用
jQuery tabs dont work when I follow link to the page in my rails app
我遵循了位于此处的教程:
http://inspirationalpixels.com/tutorials/creating-tabs-with-html-css-and-jquery
用 css、html 和 jQuery 创建制表符。它工作正常,但如果我转到另一个页面,然后在我的导航栏中单击 link 以返回带有选项卡的页面,单击选项卡不会执行任何操作。有什么想法吗?
我猜 turbolinks 是这里的罪魁祸首。添加到 Rails 以帮助加快页面加载时间,它会弄乱一些 jQuery 东西,因为它会阻止浏览器在您每次访问页面时重新编译 JS。
基本上,当您重新访问您已经访问过的页面时,标签代码的 jQuery(document).ready(function() {...});
部分并不是 运行。第一次 Rails 已经 运行 javascript,所以为了加快速度,第二次没有这样做。不幸的是,您又需要 javascript!
对你来说幸运的是,jQuery 很聪明,并且有一个名为 page:load
的好活动,效果很好!添加以下代码:
$(document).on('page:load', function() {
// tab code goes here
});
那应该行得通!
编辑
$( document ).ready(function() {
tabs_init();
});
$( document ).on('page:load', function() {
tabs_init();
});
function tabs_init() {
jQuery('.tabs .tab-links a').on('click', function(e) {
var currentAttrValue = jQuery(this).attr('href'); // Show/Hide Tabs
jQuery('.tabs ' + currentAttrValue).fadeIn(400).siblings().hide(); // Change/remove current tab to active
jQuery(this).parent('li').addClass('active').siblings().removeClass('active');
e.preventDefault();
});
}
我遵循了位于此处的教程:
http://inspirationalpixels.com/tutorials/creating-tabs-with-html-css-and-jquery
用 css、html 和 jQuery 创建制表符。它工作正常,但如果我转到另一个页面,然后在我的导航栏中单击 link 以返回带有选项卡的页面,单击选项卡不会执行任何操作。有什么想法吗?
我猜 turbolinks 是这里的罪魁祸首。添加到 Rails 以帮助加快页面加载时间,它会弄乱一些 jQuery 东西,因为它会阻止浏览器在您每次访问页面时重新编译 JS。
基本上,当您重新访问您已经访问过的页面时,标签代码的 jQuery(document).ready(function() {...});
部分并不是 运行。第一次 Rails 已经 运行 javascript,所以为了加快速度,第二次没有这样做。不幸的是,您又需要 javascript!
对你来说幸运的是,jQuery 很聪明,并且有一个名为 page:load
的好活动,效果很好!添加以下代码:
$(document).on('page:load', function() {
// tab code goes here
});
那应该行得通!
编辑
$( document ).ready(function() {
tabs_init();
});
$( document ).on('page:load', function() {
tabs_init();
});
function tabs_init() {
jQuery('.tabs .tab-links a').on('click', function(e) {
var currentAttrValue = jQuery(this).attr('href'); // Show/Hide Tabs
jQuery('.tabs ' + currentAttrValue).fadeIn(400).siblings().hide(); // Change/remove current tab to active
jQuery(this).parent('li').addClass('active').siblings().removeClass('active');
e.preventDefault();
});
}