悬停时标题未定义(jQuery UI Tooltip)

时间:2016-02-08 19:14:58

标签: jquery

以下代码在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]

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之外,并转移到需要时调用的函数