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、bind loadで試しました、ライブロード、img .lenght、.ready、画像または div 全体を選択するすべてのものですが、まだ何も機能していないようです。

助言がありますか?ありがとう

編集すると、関数トリガーがなくても、スクリプトは問題なく機能します。これらのトリガーのいずれかを使用すると (.ready を除くが、本来の動作を行わない)、スクリプトはそのトリガー (ローダーを非表示にする場所) で停止し、それ以上は進みません。

4

1 に答える 1

5

わかりました、私はそれを整理しました。問題は、jquery が「わかりました。このバディには、画像が読み込まれたときに撮影する機能があります。OFC は、コンテンツ div 内に画像がなくても続行されます」と考えるほどスマートだと思っていたことです。残念ながらそうではありません、次のようなイベントを書くと

$("#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 に答える