gpt4 book ai didi

javascript - jQuery timeago 用法

转载 作者:数据小太阳 更新时间:2023-10-29 04:28:06 24 4
gpt4 key购买 nike

我有一个 <abbr>在我的 HTML 中使用类“timeago”标记。当我在页面加载时设置它的值时,然后调用 jQuery("abbr.timeago").timeago();在文档就绪功能上它可以工作。

我的问题是,如果我从一些 javascript 函数中动态更改 abbr.timeago 标题,我怎样才能让 timeago 插件在更新的 abrr.timeago 元素上发挥它的魔力?

我应该调用哪个函数?我应该删除 jQuery("abbr.timeago").timeago(); 吗?从文件准备功能或离开它?谢谢

编辑问题:

@squiddy 示例有效,仅更新时间一次,并且保持不变。例如,如果我将 timeago 放到当前时间 .. 那么它就好像它没有改变一样?

赏金更新:

请忽略之前的问题。在我的网站上有一个链接,点击它会调用 getJSON 函数,它将一些信息从服务器获取到一个表中。

每一行代表来自服务器的反馈。这是我的 getJSON 伪代码:

            $.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant)
//Store last checked time in title
column.attr("title", iso8601(new Date()));
//invoke timeago on this title
column.html(jQuery.timeago(iso8601(new Date())));
....iso8601 is date format function
});

因此,对于我从服务器获得的每个反馈(n 次),都会调用此 getJSON。当 json 完成时,表中的相应列将填充上次更新时间。

但似乎timeago 并没有读取更改后的title 值,它不识别更新的DOM。我为来自服务器的每个反馈放置了一个 console.log(element.attr("title")) 用于调试目的,只是为了查看我是否将 title 属性设置为当前时间,它确实如此,但 timeago 获取了最初加载的标题值(value)。

我该怎么办我也试过这个版本:

$.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant)
//Store last checked time in title
column.attr("title", iso8601(new Date()));
//invoke timeago on this title

$(column).livequery(function() {
$(this).timeago(iso8601(new Date()));
console.log($(this).attr("title"));
});
});

我花了几个小时尝试了几种可能的解决方案..比如每 n 秒调用一次函数来调用 timeago 函数,但结果总是相同

最佳答案

更新 2:同样的技巧在这里起作用。元素 column 之前被 timeago 转换过一次,当发生这种情况时,timeago 在该元素上放置了一个“timeago”数据字段。当这个数据字段存在时,timeago 不会打扰它,所以你必须清除它。代码看起来像这样:

$.getJSON("feedback/" + feedbackId, function(data) {
var column
// ... declared variable in which column selector
// ... some logic that populates table(irrelevant)
// Store last checked time in title
column.attr("title", iso8601(new Date()));
// invoke timeago on this title
column.data("timeago",null).timeago();
// ... iso8601 is date format function
});

更新: 更正,测试,诀窍是,timeago 插件标记已经转动的元素,不要让它们再次转动,除非标记被清除

当您更改 abbr.timeago 中的值时,您应该再次仅对该元素运行 timeago() 函数。我会为此推荐一些功能:

$.fn.changeTimeago = function(isotime) {
return $(this).attr("title",isotime).data("timeago",null).timeago();
}

// usage:
$("abbr.timeago").changeTimeago("2004-07-17T09:24:17Z");

希望这就是您所需要的!

关于javascript - jQuery timeago 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com