<abbr>
HTML にクラス「timeago」のタグがあります。ページの読み込み時に値を設定してからjQuery("abbr.timeago").timeago();
、ドキュメントの準備ができている関数を呼び出すと、機能します。
私の質問は、abbr.timeago のタイトルを JavaScript 関数から動的に変更した場合、更新された abrr.timeago 要素に対して timeago プラグインを作成するにはどうすればよいですか?
どの関数を呼び出す必要がありますか? ドキュメント準備機能から削除するjQuery("abbr.timeago").timeago();
か、そのままにしておく必要がありますか? ありがとうございました
質問を編集:
@squiddy の例は機能し、時刻を 1 回だけ更新し、変更されないままです。たとえば、 timeago を現在の時刻に置くと..それは変わらないように立つだけですか?
報奨金の更新:
前の質問は無視してください。私のWebサイトには、クリックするとgetJSON関数が呼び出され、サーバーからいくつかの情報をテーブルに取得するリンクがあります。
各行は、サーバーからのフィードバックを表します。ここに私の getJSON 擬似コードがあります:
$.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant)
//Store last checked time in title
column.attr("title", iso8601(new Date()));
//invoke timeago on this title
column.html(jQuery.timeago(iso8601(new Date())));
....iso8601 is date format function
});
したがって、この getJSON は、サーバーから取得するすべてのフィードバックに対して呼び出されます (n 回)。json が完了すると、テーブルの適切な列に最終更新時刻が入力されます。
しかし、timeago は変更されたタイトルの値を読み取っていないようで、更新された DOM を認識していません。タイトル属性を現在の時刻に設定しているかどうかを確認するためだけに、サーバーからのフィードバックごとに console.log(element.attr("title")) を配置しましたが、実際にはそうですが、 timeago は最初にロードされたタイトルを取得します価値。
このバージョンも試しました:
$.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant)
//Store last checked time in title
column.attr("title", iso8601(new Date()));
//invoke timeago on this title
$(column).livequery(function() {
$(this).timeago(iso8601(new Date()));
console.log($(this).attr("title"));
});
});
私はいくつかの可能な解決策を試すのに数時間を費やしました..n秒ごとに呼び出される関数のように、timeago関数を呼び出しますが、常に同じ結果になります