0

スクロールする HTML マーキーを含むワードプレス ページがいくつかあります。ページが読み込まれると、ajax 呼び出しを使用して SQL データベースからコンテンツがフェッチされ、マーキーが埋められます。すべてが機能しますが、ページに移動すると、マーキーが一番上に達し、最初からやり直します。ページを更新すると、すべてが期待どおりに機能します。問題が発生した場所にページが最初に移動したときです。

何かアドバイス?すべてのコンテンツが取得されてタグに挿入される前に、マーキーが開始されるようなものですか??

ワードプレスのhtml:

<script type='text/javascript' src='/scripts/dialog/js/jquery-ui-1.8.18.custom.min.js'> </script>
<script type='text/javascript' src='/scripts/dialog/js/jquery-1.7.1.min.js'></script>
<script type='text/javascript' src='/scripts/dialog/popupDialog.js'></script>

<div id="emptyMarquee" class="emptyMarquee-tall"></div>

<marquee class="marquee-tall" name="Compliance" direction="up" behavior="scroll" scrollamount="3">
    <center>
    </center>
</marquee>

popupDialog.js

$(function(){
//hide the empty marquee and the marquee wrapper
$("#emptyMarquee").hide();
$("#marquee").hide();

//get projects from server
var serviceArea = $("#marquee").attr("name");
var query = "serviceArea=" + serviceArea;
$.ajax({
    type: "GET",
    url: "/scripts/dialog/getMarqueeData.php",
    data: query,
    dataType: "json",
    success: function(returnData){
        if (!(returnData.aaData[0] == "none")){//atleast 1 project returned from db                                

            $("#emptyMarquee").hide();

            //create marquee element
            $("#marquee").html("<marquee class='marquee-tall' direction='up' behavior='scroll' scrollamount='3'><center></center></marquee>");

            var projArr = [];

            for (var i = 0; i < returnData.aaData.length; i++) {            
                //returnData.aaData[i][0] - name
                //returnData.aaData[i][1] - description
                projArr.push("<strong>" + returnData.aaData[i][0] + "</strong> - " + returnData.aaData[i][1] + "</br></br>");
            };
            $.each(projArr,function(index, value){
                $("marquee center").append(value);
            })
            $("#marquee").show();
        }
        else{//no projects returned from db, show emptyMarquee div, fill with msg
            $("#marquee").hide();
            $("#emptyMarquee").html("Please check back soon for updated " + serviceArea + " projects.");
            $("#emptyMarquee").show();
        }
    }
})
});
4

1 に答える 1

0

おそらく、この問題が発生しているのは、マーキーが ajax が完了する前に実行を開始し、マーキーが一番上にあるときにデータが追加されるためです。そのajaxリクエストはすでにキャッシュされているため、更新時に機能します。

前にマーキーを用意する代わりに、ajax 呼び出しの成功時に追加します。marque say を追加する div があります

ajax 呼び出しの成功について

$('#marqueWrap').html('<marquee class="marquee-tall" name="Compliance" direction="up" behavior="scroll" scrollamount="3"><center>'+ /*your content*/ +'</center></marquee>');
于 2013-02-08T17:11:28.073 に答える