javascript - jQuery 微醉 : Dynamically update title

标签 javascript jquery tipsy

根据要求,我想更新现有的醉酒标题,但它似乎不起作用。

情况

HTML:

<ul>
    <li id="li1">Point at me (title -> value)</li>
    <li id="li2">Point at me (title -> callback)</li>
    <li id="li3" original-title="FooBar1">Point at me (title -> html attribute)</li>
</ul>

<button>Click me to update</button>​

JS:

$('#li1').tipsy({
    title: 'FooBar1'
});
$('#li2').tipsy({
    title: function() { return 'FooBar1'; }
});
$('#li3').tipsy();
$('button').click(function() {
    alert('Updating tipsy titles');

    // Try setting title attribute
    $('li1')[0].setAttribute('title', 'FooBar2');
    $('li2')[0].setAttribute('title', 'FooBar2');
    $('li3')[0].setAttribute('title', 'FooBar2');

    // Try setting original-title attribute
    $('li1')[0].setAttribute('original-title', 'FooBar2');
    $('li2')[0].setAttribute('original-title', 'FooBar2');
    $('li3')[0].setAttribute('original-title', 'FooBar2');
});

您可以在 jsFiddle 中玩这个:http://jsfiddle.net/TvFmG/3/

问题

我遇到了以下问题:

  • 通过 tipsy({title: 'string'}) 设置标题似乎根本不起作用。
  • tipsy docs建议可以通过设置 original-title 属性来更新标题值(参见“动态更新文本”部分),但这在我的情况下似乎不起作用(参见 jsfiddle)。

tipsy 文档是否完全错误,是版本不兼容还是其他问题导致此示例无法运行?

最佳答案

文档似乎是正确的,并且按照我的理解工作。

.tipsy({title: 'attribute'})

用于查找元素上的属性并从中喝醉。默认为 title 属性。所以对于问题中的例子:

$('#li1').tipsy({
    title: 'FooBar1'
});

这是试图在 #li1 上找到一个名为 FooBar1属性,它不存在。 tipsy 将寻找的默认属性是 title 属性。所以你需要这样的东西:

<li id="li1" title="hooray!">Point at me (title -> value)</li>

或使用自定义属性并在 tipsy 构造函数中指定。

<li id="li1" FooBar1="title from a custom attribute">Point at me (title -> value)</li>

$('#li1').tipsy({
    title: 'FooBar1'
});

对于通过点击部分设置的问题,这一行的JavaScript中有一个错误(尽管由于同样的原因,下一行也会出现同样的错误)。

$('li1')[0].setAttribute('title', 'FooBar2');

选择器缺少前导 # 因此 jQuery 找不到您的元素。它应该是 $('#li1'), $('#li2') 等等……

但是,以这种方式设置标题只有在您还没有覆盖每个 tipsy 构造函数中的 title 时才有效。因此,在这种情况下,您的代码将仅适用于 li3,因为其他代码具有始终返回 FooBar1 的自定义标题函数。

完整示例:

<li id="li3" original-title="FooBar1">Point at me (title -> html attribute)</li>

$('#li3').tipsy();

将返回 FooBar1。然后调用 $('#li3')[0].setAttribute('title', 'FooBar2'); 它将返回 FooBar2

关于javascript - jQuery 微醉 : Dynamically update title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13194481/

相关文章:

javascript - Bootstrap 导航栏悬停时不显示下拉菜单

javascript - 通过鼠标单击 VS 快捷键触发事件

javascript - 在 Chrome 中加载时页面跳转

javascript - firefox 中 tipsy、svg 和 css 的解决方法?

wordpress - 如何在加载时显示 Tipsy 工具提示并保持显示?

javascript - 寻找 PHP 中等效的 JavaScript 数学代码

javascript - 选择格式为 2 位数字的整数值

javascript - 如何在 ASP.Net 用户控件中使用 jQuery DropdownChecklist?

php - 使用 MySQL、jQuery 和 Ajax 添加或删除表行

jquery - 醉在多个类