点击即可更改Twitter Bootstrap Tooltip内容

reb*_*ion 217 jquery tooltip twitter-bootstrap

我在一个锚元素上有一个工具提示,它在点击时发送一个AJAX请求.这个元素有一个工具提示(来自Twitter Bootstrap).我想要在AJAX请求成功返回时更改工具提示内容.如何在启动后操纵工具提示?

小智 399

刚刚在阅读源代码时发现了这一点.所以$.tooltip(string)调用Tooltip类中的任何函数.如果你看一下Tooltip.fixTitle,它会获取data-original-title属性并用它替换标题值.

所以我们干脆做到:

$(element).tooltip('hide')
          .attr('data-original-title', newValue)
          .tooltip('fixTitle')
          .tooltip('show');
Run Code Online (Sandbox Code Playgroud)

果然,它会更新标题,这是工具提示中的值.

另一种方式(见下面的@lukmdo评论):

$(element).attr('title', 'NEW_TITLE')
          .tooltip('fixTitle')
          .tooltip('show');
Run Code Online (Sandbox Code Playgroud)

  • 甚至更短(更平滑)`$(元素).attr('title','NEW_TITLE').tooltip('fixTitle').tooltip('show');` (159认同)
  • 这实际上对我不起作用,工具提示切换值然后很快就消失了.`$(element).attr('data-original-title',newValue).tooltip('show');`对我来说是最简单的工作解决方案. (15认同)
  • 谢谢!这令人困惑了一个小时. (5认同)
  • 您还可以通过数据('工具提示').选项属性更改标题,请参阅http://stackoverflow.com/questions/10181847/how-to-change-placement-of-twitter-bootstrap-tooltip-placement-after -initializat (5认同)
  • 找不到关于'fixTitle'的文档,所以我想这不是一个好主意!?... (4认同)
  • 引导程序4中的@fsasvari只需将其更改为'_fixTitle' (4认同)

Adr*_*ing 90

在Bootstrap 3中,调用属性中的更改已经触发工具提示显示中的elt.attr('data-original-title', "Foo")更改就足够了"data-original-title".

更新:您可以添加.tooltip('show')立即显示更改,您无需鼠标移除和鼠标悬停目标以查看标题中的更改

elt.attr('data-original-title', "Foo").tooltip('show');
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是最好的答案,你可以添加`.tooltip('show');`让它在更新后显示 (9认同)
  • 干净的答案,为什么没有ups:< (5认同)
  • 它不会立即应用更改,您需要mouseout和mouseover target才能看到新的标题文本 (3认同)
  • 这种解决方案比其他解决方案更好 (3认同)

Ivi*_*pić 14

这是Bootstrap 4 的更新:

var title = "Foo";
elt.attr('data-original-title', title);
elt.tooltip('update');
elt.tooltip('show');
Run Code Online (Sandbox Code Playgroud)

但最好的方法是这样做:

var title = "Foo";
elt.attr('title', title);
elt.attr('data-original-title', title);
elt.tooltip('update');
elt.tooltip('show');
Run Code Online (Sandbox Code Playgroud)

或内联:

var title = "Foo";
elt.attr('title', title).attr('data-original-title', title).tooltip('update').tooltip('show');
Run Code Online (Sandbox Code Playgroud)

从 UX 方面,您只会看到文本已更改,没有褪色或隐藏/显示效果,并且不需要_fixTitle.


Ben*_*enG 13

您可以在不实际调用show/hide的情况下更新工具提示文本:

$(myEl)
    .attr('title', newTitle)
    .tooltip('fixTitle')
    .tooltip('setContent')
Run Code Online (Sandbox Code Playgroud)

  • 这个,在链的末尾有`.tooltip('show')`,对我有用. (3认同)

ndr*_*age 11

如果您想在不关闭并重新打开工具提示的情况下更改文本,那么这是一个很好的解决方案.

$(element).attr('title', newTitle)
          .tooltip('fixTitle')
          .data('bs.tooltip')
          .$tip.find('.tooltip-inner')
          .text(newTitle)
Run Code Online (Sandbox Code Playgroud)

这样,文本被替换而没有关闭工具提示(没有重新定位,但如果你正在做一个单词改变等应该没问题).当你将鼠标悬停在工具提示上时,它仍会更新.

**这是bootstrap 3,对于2你可能需要更改数据/类名

  • 说'$ tip`不是`$(element)`的属性 (5认同)

小智 8

如果工具提示已实例化(可能使用javascript),则此方法有效:

$("#tooltip_id").data('tooltip').options.title="New_value!";
$("#tooltip_id").tooltip('hide').tooltip('show');
Run Code Online (Sandbox Code Playgroud)

  • 使用bootstrap 3,它变为`$('#tooltip_id').data('bs.tooltip').options.title ='New_value!';` (7认同)

小智 7

for Bootstrap 4:

$(element).attr("title", "Copied!").tooltip("_fixTitle").tooltip("show").attr("title", "Copy to clipboard").tooltip("_fixTitle");
Run Code Online (Sandbox Code Playgroud)

  • 这使用了未公开的API。谨防。 (2认同)

小智 7

Bootstrap 5没有fixTitle_fixTitle不再有,所以我必须处理整个 Tooltip 对象并重建它:

$('a.copy').click(function() {
    var tt = bootstrap.Tooltip.getInstance(this);
    tt.dispose();
    this.setAttribute('title', 'Copied!')
    tt = bootstrap.Tooltip.getOrCreateInstance(this);
    tt.show();
}
Run Code Online (Sandbox Code Playgroud)


小智 6

对于bootstrap 3.x

这似乎是最干净的解决方案:

$(element)
  .attr('data-original-title', 'New title').tooltip('show')
Run Code Online (Sandbox Code Playgroud)

Show用于立即更新标题,而不是等待隐藏工具提示并再次显示.


Mor*_*ade 6

您可以data-original-title使用以下代码更改:

$(element).attr('data-original-title', newValue);
Run Code Online (Sandbox Code Playgroud)


Chl*_*loe 6

引导程序4

$('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show')
Run Code Online (Sandbox Code Playgroud)

https://getbootstrap.com/docs/4.1/components/tooltips/#tooltipdispose

$('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show')
Run Code Online (Sandbox Code Playgroud)
$('#topic_1').tooltip({title: 'Hello'}).tooltip('show');
setTimeout( function() {
  $('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show');
}, 5000);
Run Code Online (Sandbox Code Playgroud)
#topic_1 {
  border: 1px solid red;
  margin: 50px;
}
Run Code Online (Sandbox Code Playgroud)