2010-12-15 13 views
2

setIntervalを使用して20秒ごとにタイマーが設定されています.jQueryのajax関数load()を使用して、toparticles divをサイトの別のURLの情報で設定します。そのロードが成功すると、toparticles divの最初の記事にjQueryのハイライトエフェクトが実行されます。両方の場所にあるすべての記事は、別​​々のテーブルに保持されているので、#toparticlesテーブルを使用します。ajax情報が同じでない場合のみjQueryアニメーション

最初の記事が同じでない場合は、toparticles divに読み込みを行い、アニメーションを実行したいだけです。

20秒ごと: 最初のテーブルが現在のページの最初のテーブルと等しくない場合、このURLをチェックして、そのURLの情報でdiv全体をリロードし、ハイライトアニメーションを実行します。

私の現在のコード:

setInterval(function() { 
$("#toparticles").load("http://myarticles/feed/of/top/articles", function() 
{ 
$("#toparticles table:first").effect("highlight", {color:"#f2f37f"}, 1000);}); 
}, 20000); 

おかげで、あなたは、任意のヘルプを提供することができます。

+0

あなたはのidのいくつかの並べ替えを持つことができます最初の記事ので簡単にテストすることができますそれは同じですか?あなたはそれのHTML全体をチェックする必要がありますか? –

答えて

1

単純なアプローチである(最高のは、IDのいくつかの並べ替えを持っているだろう)

setInterval(function() { 
    var first_html = $("#toparticles table:first").text(); 
    $("#toparticles").load("http://myarticles/feed/of/top/articles", function() 
    { 
    if (first_html == $("#toparticles table:first").text()) 
    { 
     $("#toparticles table:first").effect("highlight", {color:"#f2f37f"}, 1000); 
    } 
    }); 
}, 20000); 

それはAJAX呼び出しの前に、変数の最初のテーブルのテキストを格納し、それを比較します新しい最初のテーブルに。 (私はテキストのみをチェックし、あなたが詳細のレベルが必要な場合は全体のHTML構造を確認するために.html()にそれを変えることができる)

+0

現在のページの最初のテーブルが同じものである場合、条件付きチェックはしませんか?他にはないのですか?それを使ったあと、 "これ"のいくつかのバリエーションかもしれませんね? –

+0

@Danでは、新しいコンテンツが要素に追加された後にコールバックメソッドが呼び出されます。したがって、 'first_html'変数はプレアヤックスの内容を保持し、新しい' $( "#toparticles table:first")。text() 'はポストajaxの内容を返します。 –

1

をあなたはおそらくjQuery.ajax()を使用するように要求を変更することができます。それは "ifModified"オプションを持っています。ドキュメントから:

ifModifiedBooleanデフォルト:

偽の応答が最後のリクエスト以降に変更された場合にのみ、要求が成功することができます。これは、Last-Modifiedヘッダーをチェックすることによって行われます。デフォルト値はfalseで、ヘッダーは無視されます。 jQuery 1.4では、この手法は、変更されていないデータをキャッチするためにサーバーによって指定された 'etag'もチェックします。

jQuery.ajax() documentation

また、私は自分自身をチェックしていませんが、彼らが戻って​​関数の呼び出しを使用する例を持っているかのように思える:

$("#success").load("/not-here.php", function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $("#error").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 
関連する問題