2012-05-06 17 views
1

私のjavascript HTMLテンプレートが時間を自動更新しないが、通常のHTMLはなぜですか?ここで私が使用しているテンプレートライブラリの:https://github.com/blueimp/JavaScript-Templates自動更新、facebookスタイルの時刻書式設定

はここに(:http://jsfiddle.net/trpeters1/SpYXM/76/をあなたはここでそれをいじることができます):私のJSのです

$(document.body).on('click', 'button', function(){ 
    var id= $(this).data('id'); 
    var data={id:id, string: "just now...", fxn: nicetime()};  
    var result = tmpl('<div id="string" data-id="'+id+'">{%=o.string%}</div><div id="function" data-id="'+id+'">{%=o.fxn%}</div>', data);  
    $('div[data-id="'+id+'"]').html(result); 
    nicetime(); 
}); 

function nicetime(){ 
    var time = new Date(), 
    var comment_date = setInterval(function() { 
    var time2 = time_since(time.getTime()/1000); 
    $('#time_since').html(time2); 
    return time2; 
    }, 
    1000); 
} 

HTML:

<button data-id="1">1</button> 
<div data-id="1"></div> //tmpl output 
<div id="time_since"></div> //non-tmpl output 
+0

jqueryのデータ()関数は、()だけATTRを使用して、データ属性とは何の関係もありません。 – Musa

+0

@Musaありがとう、setIntervalの問題についての提案はありますか? –

答えて

3

あなたはthisような何かをしたいです。

JavaScriptテンプレートを使用すると、一般にテンプレートにしてから、要素全体のinnerHTMLを1秒ごとにリセットするのではなく、特定の要素の値を動的に更新します。

ここではJavaScriptです:

$(document.body).on('click', 'button', function(){ 
    var id= $(this).val(), 
     time = +new Date, 
     data = { 
      id: id, 
      string: "just now..." 
     },  
     result = tmpl('<span class="string">{%=o.string%}</span>', data), 
     tgt = $('#'+id), 
     str; 
    tgt.html(result);  
    str = tgt.find('.string'); 
    window.setInterval(function() { 
     str.html(time_since(time/1000)); 
    }, 1000); 
}); 
+0

すごく、もう少し詳しく調べてみましょうが、これはうまくいくと思います! –

+0

今、私はそれを得る。テンプレートの値を文字列として保持してから、テンプレートを配置した後にsetIntervalを見つけて実行してください。ありがとう! –

関連する問題