jQuery Ajax,在触发功能之前等待图像加载

g0d*_*3ss 4 ajax jquery load priority-queue

嗨,我有一个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');
Run Code Online (Sandbox Code Playgroud)

});

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

有什么建议么?谢谢

编辑的事情是,没有任何函数触发器,脚本可以正常工作。如果我使用这些触发器中的任何一个(.ready除外,但它没有执行应有的操作),脚本将在该触发器处停止(我将加载程序隐藏在其中),它不会继续进行下去。

g0d*_*3ss 5

好吧,我整理出来。问题是我以为jquery很聪明,以为“好吧,这个伙伴有一个功能,可以在加载图像时进行拍摄。即使内容div中没有​​图像,OFC也会继续运行”。不幸的是,如果您编写类似

$("#mydiv img").on('load', function(){
alert("images loaded");
});
Run Code Online (Sandbox Code Playgroud)

警报只会触发如果有在里面#mydiv和图像,如果图像已被加载。如果#mydiv仅包含文本,则该函数也不会被触发。我通过添加解决

if ($("#main_content").find("img").length > 0) {
     $("#main_content img").on('load', function() {
Run Code Online (Sandbox Code Playgroud)

否则普通的ajax加载功能。

感谢您的答复