2013-10-21 29 views
0

我正在使用twitter api和created_at屬性。具體來說,我試圖讓時間戳發佈X秒,幾分鐘,幾小時,幾天,幾周前。通過jquery調用函數並將結果輸出到剃刀html中的div

我想我有正確的函數寫,我只是不確定如何調用該函數。我試圖把我自己的屬性放在div上,並使用jquery來查找div。現在我只需要知道如何調用該函數。

<div style="text-align: left" data-utc="@Model.FullTweetData.CreatedAt"></div> 

<script src="/javascript/jquery-2.0.3.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    $(document).ready(function ($) { 

     $("div[[email protected]]") 

     function parseTwitterDate(tdate) { 
      var system_date = new Date(Date.parse(tdate)); 
      var user_date = new Date(); 
      if (K.ie) { 
       system_date = Date.parse(tdate.replace(/(\+)/, ' UTC$1')) 
      } 
      var diff = Math.floor((user_date - system_date)/1000); 
      if (diff < 60) { return "less than a minute ago"; } 
      if (diff <= 90) { return "one minute ago"; } 
      if (diff <= 3540) { return Math.round(diff/60) + " minutes ago"; } 
      if (diff <= 5400) { return "1 hour ago"; } 
      if (diff <= 86400) { return Math.round(diff/3600) + " hours ago"; } 
      if (diff <= 129600) { return "1 day ago"; } 
      if (diff < 604800) { return Math.round(diff/86400) + " days ago"; } 
      if (diff <= 777600) { return "1 week ago"; } 
      return "on " + system_date; 
     } 
     var K = function() { 
      var a = navigator.userAgent; 
      return { 
       ie: a.match(/MSIE\s([^;]*)/) 
      } 
     }(); 
    }); 
</script> 

任何幫助將是屬性的偉大

+1

我相信[moment.js(HTTP:/ /momentjs.com/)爲你提供了一個更好的解決方案... –

+0

,看起來像它會工作,但我仍然在同一條船上,但我如何在一個div中調用該腳本。 –

回答

1

GET值,並將其存儲在一個變量:

var timeThing = $("div").attr('data-utc'); 

然後調用函數並傳遞ARG:

parseTwitterDate(timeThing); 

我會猜測,只是選擇所有的divs不會給你你正在尋找的結果,所以你可以考慮安裝ID或類的div,以確保您的選擇是正確的:

HTML:

<div class="twitterDates" data-utc="@Model.FullTweetData.CreatedAt"></div> 

然後你可以選擇與該類的所有div,通過每一個迭代,並調用解析日期函數爲每一個。

JS:

$('div.twitterDates').each(function(){ 
    var timeThing = $(this).attr('data-utc); 

    parseTwitterDate(timeThing); 
}); 

也因爲你可能需要把地方的函數的返回值,你可能會考慮這樣的事情:

$('div.twitterDates').each(function(){ 
    var timeThing = $(this).attr('data-utc); 

    $(this).text(parseTwitterDate(timeThing)); 
});