以下代码在setInterval中每秒运行一次:
for (i = 0; i < mt1.length; i++){
$(mt1[i]).each(function(){
$(this).attr('title', $(this).attr('title').split(" ")[0] + " " + $(this).attr('title').split(" ")[1]);
});
}
title = "<img src='/flags/4x3/cn.svg' width='20px'' height='20px'> " + accounting.formatMoney(accounting.unformat($(this).html().split(" ")[0].substr(2).slice(0, -1)) * -6, '¥', 2, ",", ".");
$(this).attr('title', title + '|' + $(this).attr('title'));
正在发生的事情是,当没有悬停时,检查元素是否正确显示,文本每秒闪烁一次,如setInterval()
方法中所述:<span title="55 tests |<img src='/flags/4x3/cn.svg' width='20px'' height='20px'> ¥1.90</span>
但是在它被徘徊之后,它会显示undefined
而不是55 tests
。发生了什么事?
在悬停后显示在console.log
中:
undefined |<img src='/flags/4x3/cn.svg' width='20px'' height='20px'> ¥1.90
更新:
似乎tooltip (jQueryUI Tooltip)
我正在使用它与它有关,下一个代码在页面的开头。做法是将|
转为<br>
以将货币值移至下一行:
$(function() {
$( document ).tooltip({
content: function(callback)
{
callback($(this).prop('title').replace(/\|/g, '<br />'));
}
})
});
更新:JSFiddle补充道:
[https://jsfiddle.net/hrkLssgk/][1]
答案 0 :(得分:0)
我不确定你是否需要你的代码在setInterval中,所以我离开了它。这是一个工作小提琴:https://jsfiddle.net/hrkLssgk/2/
请注意,我们已将您的数组更改为包含每个元素的更新标志。一旦元素更新了标题,它就不会再次进行更新,直到标志被恢复。
var mt1 = [
[$("#la"), false] /* first element is jquery, second is flag if it's been updated */
];
遍历每个元素,只有当标志为false时才执行title-change:
mt1.forEach(function(){
if (!mt1[i][1]) {
如果不需要setInterval,最好将此逻辑移到setInterval之外,并转移到需要时调用的函数