4

初投稿です。だから私はこのように見える要素でいくつかのテキストをフォーマットする必要があります

<div class="entry-time">
  2012-05-30T20:11:06+00:00 
</div>

これをmoment.jsでより読みやすいものにフォーマットしようとしています。これは、javascript を使用してフロントエンドからのみ行うことができます。このような関数を書きました。

$(document).ready(function() {
    function formatDate(date) {
        formattedDate = date.text();
        var d = moment(formattedDate, "YYYY-MM-DDTHH:mm:ss");
        $(date).html( d.format("dddd, MMMM Do YYYY, h:mm:ss a"));
    };

    formatDate($('.entry-date'));
});

これは、要素が 1 つの場合は機能しますが、要素が複数ある場合は、すべてを 1 つの日付にフォーマットします。これは要素の配列を取り込むjQueryと関係があることは知っていますが、entry-dateのクラスで各要素に対して行ったことをどのように行うかわかりません。

誰でも助けることができますか?前もって感謝します。

4

5 に答える 5

6

問題の中心にあるのは、jQuery .text() メソッドが、セットを反復処理するのではなく、「一致した要素のセット内の各要素の結合されたテキスト コンテンツ (その子孫を含む)」( api.jquery.com/text ) を取得することです。あなたが意図するように要素の。

関数を jQuery .html() セッター メソッドに渡すと、次のように動作するはずです。

$(".entry-date").html(function(index, value) {
    return moment(value, "YYYY-MM-DDTHH:mm:ss").format("dddd, MMMM Do YYYY, h:mm:ss a");
});
于 2012-05-31T04:41:28.127 に答える
2

jquery の .each メソッドを使用して、各一致をトラバースする必要があります。

$(date).each(function(){  Format date here  });

これは、既存の関数 formatDate に入ります。

于 2012-05-31T04:31:22.307 に答える
1

関数に渡された要素をループする必要があります。これは、jQueryの$ .each()を使用して実行できます。簡単な例を次に示します。

http://jsfiddle.net/n1ck/QQYq2/1/

$(function(){
    function formatDate(dates) {
        dates.each(function(){
            //get date
            formattedDate = $(this).text();

            //format it
            var d = moment(formattedDate, "YYYY-MM-DDTHH:mm:ss");

            //replace it
            $(this).html(d.format("dddd, MMMM Do YYYY, h:mm:ss a"));
        });
    };

 formatDate($('.entry-time'));
});
​
于 2012-05-31T04:43:25.687 に答える
0

現在のコードに基づいて、次のformatDateように関数を変更できます

 $(document).ready(function() {
    function formatDate(date) {
      date.each(function(){
        var formattedDate = $(this).text();
        var d = moment(formattedDate, "YYYY-MM-DDTHH:mm:ss");
        $(this).html( d.format("dddd, MMMM Do YYYY, h:mm:ss a"));

      });
  };

 formatDate($('.entry-time'));
});

そして、実際のクラス名はありますが、クラスが存在しないため、何も取得しないentry-timeように呼び出しています。formatDate($('.entry-date'));entry-date

働くフィドル</p>

于 2012-05-31T04:37:46.030 に答える
0

セレクターは複数の DOM でも使用できるクラスであるため (「.」を使用したため) 、 eachを使用する必要があります

$('.entry-date').each(function(){
   formatDate($(this).val());//if it is a text box
});

また

$('.entry-date').each(function(){
   formatDate($(this).text());//if it is a label
});
于 2012-05-31T04:38:32.497 に答える