0

私はこのソースを持っています。それは以前に書いています。(私はjQueryのtimeagoプラグインを使用しています)

<script>
$(document).ready(function() {
    $("abbr.timeago").timeago();
});

function timeago(time) {
    isoTime = new Date();
    isoTime.setTime(time);
    return "<abbr class='timeago' title='"+isoTime.toISOString()+"'></abbr>";
}


function add() {
     $('#ex').append( timeago(time) );
}
</script>

関数を呼び出そうとするとadd()、常に機能するとは限りません。

これはうまくいきます:

<script>
add();
</script>

しかし、ボタンから呼び出そうとすると、うまくいきません:

<button onclick='add()'>button</button>

この行は私が追加$("abbr.timeago").timeago();した新しい行を読み取ることができなかったので、うまくいかないと思います。<abbr>(おそらく、<abbr>この行の前に追加された だけを読み取ることができます$("abbr.timeago").timeago();)

誰かがそれを解決する方法を知っていますか?

4

1 に答える 1

0

$(document).ready(..) ブロックを削除してみて、代わりに次のように定義add()します。

function add() {
     $('#ex').append( $(timeago(time)).timeago() );
}

補足として、グローバル関数に、ここで使用されている jQuery メソッドと同じ名前を付けることはおそらく避けたほうがよいでしょう。function timeago(..になり得るfunction newElFromTime(time)

プレーンな HTML 文字列の代わりに .ti​​meago() メソッドを呼び出す jQuery オブジェクトを返すように変更することもできます。

function newTimeagoFromTime(time) {
    isoTime = new Date();
    isoTime.setTime(time);
    return $("<abbr class='timeago' title='"+isoTime.toISOString()+"'></abbr>").timeago();
}

function add() {
     $("#ex").append(newTimeagoFromTime(time));
}
于 2014-12-04T09:53:10.577 に答える