2017-03-04 8 views
0

私はLivestamp.js(http://mattbradley.github.io/livestampjs/)という自動タイムアゴプラグインの1つを使用しています。これにLivestamp.js jQuery経由で手動でトリガー

<span data-livestamp="1488615741"></span>

:すべての時間間隔で

<span>8 minutes ago</span>

これを自動的に変換するmoment.jsと協力しているようです。

最終的に自動的に変換される前に数ミリ秒でグリッチが観測されるので、私はそれが気に入らない。そのため、jQueryを使用して手動で実行したいので、.append()を実行した場合は、すぐに<span>に変換します。

私はこの

$('div').append(data).promise().done(function() { 
    $(this).find('span[data-livestamp]').livestamp($(this).data('livestamp')); 
}); 

を行うことを試みた。しかし、それは動作しません。 <span>は実際にすぐに変換されますが、実際には6日前に「数秒前」に変換されます。

これを行う方法は?

更新は、コードをより簡単に変更しました。

+0

私はあなたが持っている問題を解読する際に少し問題があります。 – Jhecht

答えて

1

$(this).data('livestamp')において、$(this)は間違ったオブジェクトを指します。代わりに、家畜の上を.eachで繰り返します。あなたは遅れを持っている場合は、jQueryの必要があります

$('div').append(data).promise().done(function() { 
    $(this).find('span[data-livestamp]').each(function() { 
     $(this).livestamp($(this).data('livestamp')); 
    }); 
}); 

前答え(関係ありません、コメントが示されているよう):.each(function() {...})の内部では、thisはLivestampスパンを指しますコードが適用される前の同様の遅延。

クライアント側のJavaScriptはすべてこの方法で動作します。つまり、JavaScriptはページに埋め込まれているため、ブラウザはまずページを読み込み、そのページでJavaScriptを読み込んで実行します。 JavaScriptを実行する前に、古い状態に気付くでしょう。このHTMLが提供されるように

代わりに、遅延を回避するために、サーバー側の言語を経由して、デフォルト値を提供します。

<span data-livestamp="1488615741">8 minutes ago</span> 

もちろん、あなただけの「8分前」と書くことができませんPHPなどのサーバー側言語を使用して事前定義された値を生成する必要があります。たとえば、あなたのページがあなたの変数が$time命名され、PHPで生成され、そしてあなたがphp-time-agoを使用している場合は、あなたが書くことができる:Livestampが動作を開始する前に、この方法で

<?php $timeAgo = new Westsworld\TimeAgo(); ?> 
<span data-livestamp="<?= $time; ?>"><?= $timeAgo->inWords('@' . $time); ?></span> 

、PHPで生成されたテキストが表示されますJavaScriptコードは時間参照を最新の状態に保ちます。

もちろん、別のサーバー側言語、異なる変数名、および異なるライブラリを使用することになります。これは単なる例です。

+0

実際、jQueryやクライアント側は私にとっては大丈夫です。上記の私の投稿のようにしても、観察可能な遅延はありません。私がここで質問した唯一の問題は、 '.livestamp()'を使って手動呼び出しを書いて、プラグインの間隔を待つのではなく、変更をトリガーする方法です。私は実際には6日前に "数秒前に"変換されたので、私は間違ったコードを持っていると思う。 –

+1

コメントをいただきありがとうございます、今私は問題をよりよく理解しています!私は私の答えを変更しました。新しいソリューションが動作するかどうかを確認してください。 –

+1

最後に問題が見つかりました!ありがとうございました!それは、私が '.each()': ")私の悪い –

関連する問題