Javascript中的HTML问题

时间:2010-03-18 18:43:02

标签: javascript jquery html jquery-plugins

我正在尝试使用JQuery timeago插件在我的网站中实现'time-ago'功能。不幸的是我遇到了一些问题。

<script type="text/javascript" charset="utf-8">
jQuery("abbr.timeago").timeago();
</script>

var content = document.getElementById('div');

var html = "<abbr class=timeago title=2008-07-17T09:24:17Z></abbr>" + '<br>';
content.innerHTML += html

<div id='div'></div>

这个jquery插件基本上可以从标题中转换时间戳,并为每个abbr class = timeago以漂亮的格式打印它。问题是上面的代码不起作用,但如果我把它放在这个div中它工作正常。我想这可能是因为这个jquery插件是在javascript生成html之前应用的,但我不确定。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我敢打赌,问题在于,在将<abbr>元素放入页面之前,初始化“timeago”插件的语句正在运行。因此,当它运行时,没有任何反应。

为什么在你有jQuery的时候用原始代码添加到DOM?

$('#div').append($('<abbr/>')
  .addClass('timeago')
  .attr('title', '2008-07-17T09:24:17Z')
).append($('<br/>')).append($('<br/>'))
.find('abbr.timeago').timeago();

(我假设你确实有一个<div>元素,其中“id”值为“div”。)

声明:

$('abbr.timeago').timeago();

表示“使用”timeago“类找到所有<abbr>元素,并在每个元素上初始化”timeago“插件。”它确实意味着,“只要页面上有<abbr>元素,并且它具有”timeago“类,那么请确保设置了”timeago“插件它。”

答案 1 :(得分:1)

var html = "<abbr class=timeago title=2008-07-17T09:24:17Z></abbr>" + '<br><br>';

首先,将您的属性放在引号中:

var html = "<abbr class=\"timeago\" title=\"2008-07-17T09:24:17Z\"></abbr>" + '<br><br>';

另请参阅此页面:http://www.w3schools.com/TAGS/tag_abbr.asp

ABBR标记的要点是提供有关爬虫等内联元素的其他信息。我很难想到你可能想在日期时间使用它的原因。

我会说,而不是爬过一个你不太了解的插件,试图找出它为什么喜欢div而不是abbr,只需使用div。如果必须是内联元素,请使用<span>

答案 2 :(得分:0)

我自己想通了。使用jQuery.timeago(timestamp)函数比处理abbr等更好。