我正在使用此脚本为我的内容添加一些效果(翻转效果和标签)
<script type="text/javascript" >
$('document').ready(function () {
$('#flip-container').quickFlip();
$('#flip-navigation li a').each(function () {
$(this).click(function () {
$('#flip-navigation li').each(function () {
$(this).removeClass('selected');
});
$(this).parent().addClass('selected');
var flipid = $(this).attr('id').substr(4);
$('#flip-container').quickFlipper({}, flipid, 1);
return false;
});
});
});
然而,在.load(加载页面)之后,效果消失,我的标签的所有内容都会显示。
以下是我用于加载内容的代码:
$(function () {
if (Modernizr.history) {
var newHash = "",
$mainContent = $("#main-content"),
$pageWrap = $("#page-wrap"),
baseHeight = 0,
$el;
$pageWrap.height($pageWrap.height());
baseHeight = $pageWrap.height() - $mainContent.height();
$("nav").delegate("a", "click", function () {
_link = $(this).attr("href");
history.pushState(null, null, _link);
loadContent(_link);
return false;
});
function loadContent(href) {
$mainContent
.find("#guts")
.fadeOut(200, function () {
$mainContent.hide().load(href + " #guts", function () {
$mainContent.fadeIn(200, function () {
$pageWrap.animate({
height: baseHeight + $mainContent.height() + "px"
});
});
$("nav a").removeClass("current");
console.log(href);
$("nav a[href$=" + href + "]").addClass("current");
});
});
}
$(window).bind('popstate', function () {
_link = location.pathname.replace(/^.*[\\\/]/, ''); //get filename only
loadContent(_link);
});
} // otherwise, history is not supported, so nothing fancy here.
});
有没有办法不否定它们?有些主题使用了on()函数,但我真的不知道如何在这里使用它。如果可能的话,我希望它能够在不事先点击某处的情况下工作。
Here是该网站的链接。只有页面Acceuil和Semaine Prochaine工作。快速翻转用于第二个。 在Acceuil上也应该有一些效果(比如here),但效果只适用于第一次加载。
以下是更新的解决方案:
function loadContent(href) {
$mainContent
.find("#guts")
.fadeOut(200, function () {
$mainContent.hide().load(href + " #guts", function () {
$.getScript('js/jquery.quickflip.min.js', function () {
$('#flip-container').quickFlip();
$('#flip-navigation li a').each(function () {
$(this).click(function () {
$('#flip-navigation li').each(function () {
$(this).removeClass('selected');
});
$(this).parent().addClass('selected');
var flipid = $(this).attr('id').substr(4);
$('#flip-container').quickFlipper({}, flipid, 1);
return false;
});
});
});
$.getScript('tablecloth/tablecloth.js', function () {
tablecloth();
});
$mainContent.fadeIn(200, function () {
$pageWrap.animate({
height: baseHeight + $mainContent.height() + "px"
});
});
$("nav a").removeClass("current");
console.log(href);
$("nav a[href$=" + href + "]").addClass("current");
});
});
}
答案 0 :(得分:1)
我认为您需要在执行load
的函数中添加代码,而不是在document.ready中添加代码:
$('#result').load('ajax/test.html', function() {
$('#flip-container').quickFlip();
$('#flip-navigation li a').each(function () {
$(this).click(function () {
$('#flip-navigation li').each(function () {
$(this).removeClass('selected');
});
$(this).parent().addClass('selected');
var flipid = $(this).attr('id').substr(4);
$('#flip-container').quickFlipper({}, flipid, 1);
return false;
});
});
});
});
显然,行$('#result').load('ajax/test.html', function()
需要修改以匹配您对load
的调用。
原因是当您尝试附加#flip-container
时quickFlip
不存在。完成对$('#flip-container').quickFlip();
的调用后,您必须致电load
,并检索您要使用的quickFlip
HTML。
答案 1 :(得分:0)
嘿试试这段代码......
$( document ).ready(function() {
$('#flip-container').quickFlip();
$('#flip-navigation li a').each(function () {
$(this).on("click",function () {
$('#flip-navigation li').each(function () {
$(this).removeClass('selected');
});
$(this).parent().addClass('selected');
var flipid = $(this).attr('id').substr(4);
$('#flip-container').quickFlipper({}, flipid, 1);
return false;
});
});
});
我已将click
事件更改为on
,如果您要动态添加内容,则会对您有所帮助。