将每个<attr>标题转换为ISO8601,单独</attr>

时间:2014-07-30 20:14:22

标签: javascript jquery utc iso8601 timeago

问题:如何将每个标题单独转换为ISO8601

我正在尝试使用timeago JQuery库。我使用UTC字符串填充标题,因此我必须在运行Timeago库之前将UTC attr标题转换为ISO8601,否则Safari / FF / IE不会显示任何内容。

JQuery的

var dateString = $('.timeago').attr('title');
var dateConvert = new Date(dateString);
 $('.timeago').attr('title', dateConvert.toISOString());

HTML

<abbr class="timeago" title="Sun, 30 Jul 2014 15:06:00 -0500"></abbr>
<abbr class="timeago" title="Sun, 30 Jul 2014 14:45:00 -0500"></abbr>

结果

<abbr class="timeago" title="2014-07-30T20:06:00.000Z">3 minutes ago</abbr>
<abbr class="timeago" title="2014-07-30T20:06:00.000Z">3 minutes ago</abbr>

预期结果

<abbr class="timeago" title="2014-07-30T20:06:00.000Z">3 minutes ago</abbr>
<abbr class="timeago" title="2014-07-30T19:45:00.000Z">24 minutes ago</abbr>

1 个答案:

答案 0 :(得分:1)

您的代码仅抓取第一个title元素的.timeago属性。

[jQuery的attr()][1]方法“[获取]匹配元素集合中第一个元素的属性值,或[集合]每个匹配元素的一个或多个属性”docs)。

使用jQuery's .each方法,如果您要对中每个所选元素执行操作:

$(".timeago").each(function() {
    var dateString = $(this).attr('title');
    var dateConvert = new Date(dateString);
    $(this).attr('title', dateConvert.toISOString());
});