вызвать функцию через jquery и вывести результаты в div в бритве html

0

Я работаю с твиттером api и свойством created_at. В частности, я пытаюсь получить timestamp, чтобы выложить X секунд, минут, часов, дней, недель назад.

Я думаю, что у меня есть правильная функция, я просто не знаю, как вызвать функцию. Я попытался поместить свой собственный атрибут в 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 предлагает вам лучшее решение ...
  • 0
    похоже, это будет работать, я все еще в той же лодке, хотя о том, как я могу назвать этот сценарий в div, хотя.
Теги:
razor

1 ответ

1

получить значение атрибута и сохранить его в переменной:

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

затем вызовите функцию и передайте аргумент arg:

parseTwitterDate(timeThing);

Я собираюсь предположить, что просто выбор всех divs не даст вам результат, который вы ищете, поэтому вы можете рассмотреть возможность подключения id или классов к divs, чтобы убедиться, что вы выбираете правильный:

HTML:

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

Затем вы можете выбрать все div с этим классом, выполнить итерацию каждого из них и вызвать функцию даты синтаксического анализа для каждого из них.

ЯШ:

$('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));
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню