4

嗨,我有一个 jquery 内容动画,除了内容加载外,一切正常。

$(function() {
var newHash      = "",
    $mainContent = $("#main_content"),
    $pageWrap    = $(".big_col"),
    $main_menu = $("a.main_menu"),
    baseHeight   = 0,
    $el;

$pageWrap.height($pageWrap.height());
baseHeight = $pageWrap.height() - $mainContent.height();

$("body").delegate("a.main_menu", "click", function() {
    window.location.hash = $(this).attr("href");
    return false;
});

$(window).bind('hashchange', function(){

    newHash = window.location.hash.substring(1);

    if (newHash) {
        $mainContent
            .fadeOut(200, function() {
                $mainContent.hide(function() {
                    $(".loader").show();
                    var page = newHash.replace(/\..+$/, '');
                    var page = page.replace(/!/, '');
                    var data = 'page=' + page;
                    $.ajax({
                            url: "main_content/action.php", 
                            type: "POST",       
                            data: data + "&request=ajax",
                            cache: false,
                            success: function (html) {

                                    $mainContent.html(html);
                                        $("#main_content").ready(function() {
                                            //var loaded = 0;
                                            $(".loader").hide();
                                    _gaq.push(['_trackPageview', '/it_'+page]);
                                                    $mainContent.fadeIn(200, function() {
                                                    $pageWrap.animate({
                                                    height: baseHeight + $mainContent.height() + "px"
                                                    }, 300);
                                                });

                                        $main_menu.removeClass('current');
                                        $('a[href="#' + newHash + '"]').addClass('current');
                                        return false

                                        });
                                    //});

                              }
                        });

                    });

                });


    };

});

$(window).trigger('hashchange');

});

这是代码,我几乎尝试了我在堆栈溢出和其他站点上阅读的所有内容,但似乎没有任何效果(您在我粘贴的代码中看到的 .ready 只是我尝试的最后一件事)我尝试使用 .load,绑定加载, live load, img .lenght, .ready, 一切都选择图像或整个 div 但似乎仍然没有任何效果。

有什么建议么?谢谢

编辑的事情是,没有任何功能触发器,脚本工作得很好。如果我使用这些触发器中的任何一个(.ready 除外,但它没有做它应该做的事情),脚本会在那个触发器处停止(我隐藏加载器的地方)它不会再继续下去。

4

1 回答 1

5

好的,我整理出来了。问题是我认为 jquery 足够聪明,可以思考“好吧,这个伙伴有一个功能,可以在加载图像时拍摄。即使内容 div 中没有图像,OFC 也会继续”。不幸的是,它不是那样的,如果你写一个像这样的事件

$("#mydiv img").on('load', function(){
alert("images loaded");
});

仅当#mydiv 中有图像并且图像已加载时才会触发警报。如果#mydiv 只包含文本,该函数也不会被触发。我通过添加解决了

if ($("#main_content").find("img").length > 0) {
     $("#main_content img").on('load', function() {

否则正常的ajax加载功能。

感谢您的回复

于 2012-08-28T13:19:19.483 回答