Jquery ajax,在发射功能之前等待图像加载

时间:2012-08-28 09:01:33

标签: jquery ajax 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');

});

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

有什么建议吗?感谢

编辑的事情就是没有任何函数触发器,脚本工作得很好。如果我使用那些触发器中的任何一个(除了.ready但是它没有做它应该做的事情)脚本停止在那个触发器(我隐藏加载器)它不再继续。

1 个答案:

答案 0 :(得分:4)

好的我把它整理出来了。 问题是我认为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加载函数。

感谢您的回复