Подтвердить что ты не робот

QTip (jQuery plug-in) Как удалить все qtips на моей странице?

Я использую jQuery-plugin qTip. Какая команда уничтожить все всплывающие подсказки на моей странице?

Я пробовал:

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

Но это не сработало... Благодаря

4b9b3361

Ответ 1

Я решил с помощью $(".qtip").remove();

Ответ 2

qTip2 - это более новая версия этого script, но я хотел бы отметить 1 вещь.

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

Этот фрагмент кода не уничтожал все всплывающие подсказки - он просто удалял их контейнеры. Все обработчики и события, связанные с объектами, которые вызывают всплывающие подсказки, все еще доступны в памяти браузера.

В qTip, чтобы удалить всплывающую подсказку и ее обработчик, вам придется использовать:

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

или

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

В qTip2, однако, используя это:

$(mytooltip).remove();

Автоматически вызывать всплывающую подсказку api и destroy и ее обработчики полностью.

Ответ 3

$('.qtip').each(function(){
  $(this).data('qtip').destroy();
})

Ответ 4

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");
}

Ответ 5

Выглядит багги. Мне повезло с этим, но он не восстанавливает исходные заголовки. Я подозреваю, что destroy не делает этого...

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

Кажется, вы не можете вызывать destroy для элементов без qTip - он не прерывается молча, но выдает исключение и останавливает цикл.

Ответ 6

Я испытал, что api-call

$(selector).qtip('destroy')

не удаляет все qtip-данные надежно, особенно при использовании нескольких qtips одновременно.

В моем случае мне пришлось удалить видимый qtip и успешно использовать это обходное решение:

$(selector).removeData('qtip');
$('.qtip :visible').remove();

Ответ 7

   if ( jQuery( '.qtip' ).length > 0 )
    {
        jQuery( "#IdElement").qtip("destroy");
    }

Ответ 8

Ни один из этих ответов не помог мне.

В моем случае у меня был qtip на элементе с кнопкой закрытия. Кнопка закрытия не удаляется элемент, так что не было никаких ссылок точки, чтобы удалить QTIP после того, как элемент был удален.

Я думал, что $('.qtip:visible').remove() будет работать, но он каким-то образом удалил все qtips на странице, а не тот, который мне нужно удалить.

Я заметил, что для видимого qtip задан класс qtip-active, поэтому для меня это было:

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

Ответ 9

Возможно, немного поздно, но у меня возникли проблемы с загрузкой памяти и страницы, когда вызов ajax заменяет содержимое на странице, удаляя целевые объекты qtip2, прежде чем уничтожать их, поэтому некоторые элементы остаются, даже если цель ушла.

Исходя из того, что иногда вы хотите очистить все элементы и данные qtips2, независимо от того, существует или нет оригинальный объект, некоторые элементы подсказки остаются на теле, поэтому, когда исходная цель ушла, нет простого способа вызовите метод destroy().

Если вы не выполняете поиск объектов, а не целей.

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

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

    //if it 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