0

ajaxローダーの使用方法は私の質問です。私はajaxが初めてです。ユーザーがサムネイル画像をクリックすると画像を変更する機能がありますが、画像が重いので、2番目の画像が読み込まれるまでajaxが必要です。loader.gif を作成しました。このイメージをローダーとして使用する方法を知りたいだけです。

<script type="text/javascript">
    jQuery(function (){
        jQuery('#data').find('img').each(function(){
            jQuery(this).click(function (){
                var crd = jQuery(this).attr('title');
                jQuery('#bigimg').fadeOut('slow', function (){
                    jQuery(this).find('#imnew').attr('src', 'images/' + crd +".jpg")
                }).fadeIn()
            })
        })
    })
</script>

HTML

<div id="bigimg">
    <img src="images/bigImage1.jpg" id="imnew" alt="" />
</div>

<div id="data">
    <div class="sub">
        <div class="1">
            <img src="images/thumb1.png" width="117" height="74" title="bigImage1" alt="" />
        </div>
        <div class="2">
            <img src="images/thumb2.png" width="117" height="74" title="bigImage2" alt=""/>
        </div>
        <div class="3">
            <img src="images/thumb3.png" width="117" height="74" title="bigImage3" alt=""/>
        </div>
        <div class="4">
            <img src="images/thumb4.png" width="117" height="74" title="bigImage4" alt=""/>
        </div>
        <div class="5">
            <img src="images/thumb1.png" width="117" height="74" title="bigImage1" alt=""/>
        </div>
        <div class="6">
            <img src="images/thumb2.png" width="117" height="74" title="bigImage2" alt=""/>
        </div>
        <div class="7">
            <img src="images/thumb3.png" width="117" height="74" title="bigImage3" alt=""/>
        </div>
        <div class="8">
            <img src="images/thumb4.png" width="117" height="74" title="bigImage4" alt=""/>
        </div>
    </div>
</div>
4

2 に答える 2

2

画像の読み込みが完了したことを通知するには、jQuery.load を使用する必要があります。

load イベントは、要素とすべてのサブ要素が完全に読み込まれると、要素に送信されます。このイベントは、URL に関連付けられた任意の要素 (画像、スクリプト、フレーム、iframe、および window オブジェクト) に送信できます。http://api.jquery.com/load/

<script type="text/javascript">
    jQuery(function (){
        jQuery('#data').find('img').each(function(){
            jQuery(this).click(function (){
                var crd = jQuery(this).attr('title');
                // $('#loader').show();
                jQuery('#bigimg').fadeOut('slow', function (){
                    jQuery(this).find('#imnew').attr('src', 'images/' + crd +".jpg")
                    .load(function() { 
                                    $('#loader').hide();
                                    $('#bigimg').fadeIn()

                   });
                })
            })
        })
    })
</script>
于 2012-05-26T12:09:50.640 に答える
0

これを試して:

すべてのサムネイルに同じクラス名を付けてから、次のようにします。

        $('.thumbnail').click(function (){
            var thumbNail = $(this);
            var thumbPath = $(this).attr('src');
            var crd = $(this).attr('title');
            $(this).attr('src', 'images/loader.gif');
            $('#bigimg').fadeOut('slow', function (){
               $(this).load(function() {
                  $(this).fadeIn();
                  $(thumbNail).attr('src', thumbPath);
               });
               $(this).attr('src', crd);
            })

        })
于 2012-05-26T12:10:39.567 に答える