6

ajax経由で更新するWebページがあります。更新されたニュース フィードを 1 分ごとに読み込みます。私がやりたいことは、受信日付フィールドを検出し、その周りに強力なタグを配置する JavaScript を作成することです。フィード スルーを取得する html のサンプルを次に示します。

<div class="results">
  <div class="article">
    <div class="date">jan 8, 2013</div>
    <p>Some content here</p>
  </div>
  <div class="article">
    <div class="date">feb 8, 2013</div>
    <p>Some content here</p>
  </div>
</div>

それを更新する基本的な JavaScript を書くことはできますが、一度しか起動しません。「結果」要素に何か変更があるかどうかをJavaScriptに検出させ、それに応じて動作させるにはどうすればよいですか。

4

3 に答える 3

2

JQuery を使用している場合 (質問にタグを付ける必要がありますjquery)、 を使用してこのようなソリューションが必要です$.ajaxComplete。他のフレームワークを使用している場合は、これを同様に行う方法が他にもあります。

$(document).ajaxComplete(function() {
  $(".results .date").each(function() {
    var strong = $('<strong>').text($(this).text());
    $(this).empty().append(strong);
  });
});

// for this test, only to demonstrate, manually trigger an ajax complete event
function test() {
  $(document).trigger('ajaxComplete');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="results">
  <div class="article">
    <div class="date">jan 8, 2013</div>
    <p>Some content here</p>
  </div>
  <div class="article">
    <div class="date">feb 8, 2013</div>
    <p>Some content here</p>
  </div>
</div>
Test: <button onclick="test()">Trigger JQuery Ajax Complete Event</button>

結果の変化を検出する唯一の方法は、A)結果に基づいて、それが新しいことを約束するものであると仮定するか、B)以前のバージョンと比較することです。メソッドB$.ajaxSendの変更をスタッシュするために使用できます。

方法Aを使用している場合は、最大日付を追跡し、日付が大きい場合にのみ何かを行い、その日付で最大日付を更新できます。

于 2016-09-28T03:34:31.590 に答える
1

リスナーを Ajax ( .complete()または.ajaxStop( ) のいずれか) にアタッチし、すべての日付を取得して今日の日付と比較できますか。一致する場合は、日付を太字にします。このようなもの:

$( document ).ajaxStop(function() {
    var today = new Date();

    $.each( $('.article .date'), function( i, el ){
        var el_text = el.text();
        if(el_text == today.toLocaleFormat('%b %d, %Y')) {
            el.html('<b>' + el_text + '</b>');
        }
    });
});
于 2016-10-04T14:35:45.783 に答える