在.load之后,Jquery效果消失

时间:2013-07-04 11:29:31

标签: javascript jquery html5 css3

我正在使用此脚本为我的内容添加一些效果(翻转效果和标签)

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



                    });
                });
    }

2 个答案:

答案 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的调用。

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

原因是当您尝试附加#flip-containerquickFlip不存在。完成对$('#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,如果您要动态添加内容,则会对您有所帮助。