24

我正在使用 jquery-plugin qTip。销毁页面中所有工具提示的命令是什么?

我试过:

$('.option img[title], span.taxonomy-image-link-alter img[title]').qtip("destroy");

但它没有用...谢谢

4

10 回答 10

26

我已经解决了$(".qtip").remove();

于 2010-04-28T10:27:46.707 回答
19

qTip2 是该脚本的较新版本,但我只想指出一件事。

$(".qtip").remove();

这段代码并没有破坏所有的工具提示——它只是删除了它们的容器。附加到调用工具提示的对象的所有处理程序和事件在浏览器的内存中仍然可用。

在 qTip 中,要完全删除工具提示及其处理程序,您必须使用:

$(mytooltip).qtip("destroy");

或者

$(mytooltip).qtip('api').destroy(); 

然而在 qTip2 中使用这个:

$(mytooltip).remove();

会自动调用 api 并完全销毁工具提示及其处理程序。

于 2011-09-20T10:04:24.177 回答
17
$('.qtip').each(function(){
  $(this).data('qtip').destroy();
})
于 2012-04-11T09:48:10.537 回答
12

qtip("destroy")有问题(2.1.1 版),并没有清除所有内容。

我发现这是一个适当的解决方法:

// don't call destroy if not needed
if (element.data("qtip")) {
    // the 'true' makes the difference
    element.qtip("destroy",true);
    // extra cleanup
    element.removeData("hasqtip");
    element.removeAttr("data-hasqtip");
}
于 2013-09-17T12:05:40.137 回答
2

看起来很马车 我对此有一些运气,但它不会恢复原始标题。我怀疑destroy也不会这样做...

$('span.taxonomy-image-link-alter img')
    .filter(function(){return $(this).data('qtip');})
    .qtip('destroy');

似乎你不能destroy在没有 qTip 的情况下调用元素 - 它不会静默失败,但会引发异常并停止循环。

于 2010-04-28T07:48:23.203 回答
2

我经历过api调用

$(selector).qtip('destroy')

不会可靠地删除所有 qtip-data,尤其是在同时使用多个 qtip 时。

就我而言,我必须删除可见的qtip 并成功使用此解决方法:

$(selector).removeData('qtip');
$('.qtip :visible').remove();
于 2012-09-01T21:41:09.563 回答
1

关于什么:

$('[data-hasqtip]').qtip('destroy', true);

似乎正在使用qTip2version 3.0.2

于 2018-04-18T07:21:39.797 回答
0
   if ( jQuery( '.qtip' ).length > 0 )
    {
        jQuery( "#IdElement").qtip("destroy");
    }
于 2012-04-12T13:10:15.120 回答
0

这些答案都没有帮助我。

就我而言,我在一个带有关闭按钮的元素上有一个 qtip。关闭按钮移除了元素,因此在移除元素后没有移除 qtip 的参考点。

我认为$('.qtip:visible').remove()会起作用,但它以某种方式删除了页面上的所有 qtip,而不是我想要删除的单个。

我注意到可见的 qtip 被赋予了一个 class qtip-active,所以对我有用的是:

$('.qtip-active').remove();

于 2013-07-19T20:45:23.733 回答
0

可能有点晚了,但是当 ajax 调用替换页面中的内容时,我遇到了内存和页面加载问题,在销毁它们之前删除了目标 qtip2 对象,因此即使目标已经消失,一些元素仍然存在。

基于有时你想清理所有 qtips2 元素和数据的事实,无论原始对象是否存在,一些 tooltip 元素都保留在 body 上,所以当原始目标已经消失时,没有简单的方法调用 destroy () 方法。

除非您搜索创建的对象而不是目标。

jQuery('div[id^="qtip-"]').each(function(){ //search for remaining objects

    _qtip2 = jQuery(this).data("qtip"); //access the data where destroy() exist.

    //if it's a proper qtip2 object then call the destroy method.
    if(_qtip2 != undefined){ 
        // the "true" is for immediate destroy
        _qtip2.destroy(true);
    }
    //if everything went right the data and the remaining objects in the body must be gone.
});

我使用 JQuery 来解决无冲突问题,但您可以使用“$”(符号)而不是 JQuery

于 2013-12-06T08:40:29.223 回答