0

我正在使用此脚本对我的内容添加一些效果(翻转效果和选项卡)

 <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() 函数,但我真的不知道如何在这里使用它。如果可能的话,我希望它能够工作而不必事先单击某个地方。

是该网站的链接。只有页面 Acceuil 和 Semaine Prochaine 有效。快速翻转用于第二个。在 Acceuil 上也应该有一些效果(就像这里一样),但效果只在第一次加载时起作用。

这是更新的解决方案:

 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");



                    });
                });
    }
4

2 回答 2

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.

http://api.jquery.com/load/

原因是#flip-container当您尝试附加时不存在quickFlip。您必须在调用完成并检索到您想要使用的 HTML$('#flip-container').quickFlip();后调用。loadquickFlip

于 2013-07-04T11:42:27.967 回答
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

于 2013-07-04T12:12:51.323 回答