动态更改工具提示文本(tippy.js)

时间:2017-12-12 15:49:05

标签: javascript jquery tooltip

我正在使用tippy.js在asp.net mvc应用程序中生成工具提示。 我试图根据另一个元素,下拉列表动态更改工具提示的文本。我遇到的问题是“旧的”工具提示显示在彼此之上。

这是我的代码(简化):

$(document).on('change', '.partyStatus', function (event) {
        event.preventDefault();
        event.stopImmediatePropagation(); //stops propagation of click event to other element having the same ID

    if (this.value == 5) //Visitor => no autocomplete: free text...
    {
        partyNameInput.className = "form-control partyName tip";         
        partyNameInput.title = "Please enter the visitor name.";
        tooltip('.tip', 'ehs');
    }
    else {
        partyNameInput.className = "form-control autocomplete_party partyName tip";
        partyNameInput.title = "Type in the first letter of a surname, and pick the person from the list.";

        tooltip('.tip', 'ehs');
    }

});

工具提示功能:

function tooltip(selector, userTheme) {
    tippy(selector, {
        theme: userTheme,
        position: 'right',
        animation: 'scale',
        duration: 600
    })
}

2 个答案:

答案 0 :(得分:2)

您需要将dynamicTitle选项设置为true。

tippy(selector, {
  theme: userTheme,
  position: 'right',
  animation: scale,
  dynamicTitle: true
})

然后你可以在onClick或onHover

上更改元素的title属性
element.addEventListener('click', function() {
  this.setAttribute('title', 'New tooltip title here!');
})

来源TippyJS文档:https://atomiks.github.io/tippyjs/

答案 1 :(得分:0)

对于 Tippy v6,文档中说明了如何 1) get the tippy property 和 2) how to set the content

例如,让我们在元素具有“active”类时显示“Hide”,当元素没有“active”类时显示“Show”:

$(document).on('click', '.filter', function (){
    if( $(this).hasClass('active') ){
        this._tippy.setContent('Hide')
    }else{
        this._tippy.setContent('Show');
    }
})