JQuery: Как удалить подсказливую подсказку?

Я добавляю всплывающую подсказку в divs с классом .placeTaken. Затем пользователь может перетаскивать поля вокруг, поэтому я удаляю класс и добавляю его в новый div. Когда это произойдет, я добавлю новую подсказку для этого div, и это отлично работает, но я хочу удалить старый.

Говорят, если вы хотите удалить всплывающую подсказку, установив атрибут title в пустую строку, вместо этого установите атрибут исходного названия. Я пробовал $("#"+dropFromId).attr("original-title", "");, но всплывающая подсказка все еще там. Я даже не могу изменить заголовок всплывающей подсказки, установив другой оригинальный заголовок.

Что я делаю неправильно?

Изменить: я думаю, я не дал вам ребята достаточно информации. Я использую ajax для захвата мест, которые берутся из базы данных. PHP возвращает ассоциативный массив (клиентов), который затем я использую в своем JavaScript, где совпадающее имя совпадает с именем. При удалении меняются места, поэтому я снова выполняю функцию ajax, чтобы обновить массив со всеми местами. В кулаке я добавляю всплывающую всплывающую подсказку во все занятые места, например:

$("#map div.placeTaken").tipsy({gravity: 'w', html: true, fade: true, title:
    function(){
        // id could for example be map74, substring to 74
        var id = $(this).attr("id").substring(3,6);
        return '<div>'+customers[id]+'</div><br />';
    }
});

Итак, заголовок равен тому, что соответствует этому месту в массиве. Надеюсь, что я объясню это достаточно хорошо. Когда окно будет сброшено на новое место, это произойдет

$("#map div span").bind( "dragstop", function(event, ui) {
        // some code here to change the .placeTaken class       
        // update database with the new place
        $.ajax({
            type: "POST",
            url: "map.php",
            data: "dropFromId="+ dropFromId.substring(3,6) +"& dropToId="+ dropToId.substring(3,6),
            success: function(){
            // ajax function to update the js array with new places
            customerTooltip(); 
            }
        });

        // on this place, add tooltip
        $("#"+dropToId).tipsy({gravity: 'w', html: true, fade: true, title:
            // funktion för att avgöra vilken title som ska användas
            function(){
                var id = dropToId.substring(3,6);
                return '<div>'+customers[id]+'</div><br />';
            }
        });
    }   
});

Все это работает отлично, поэтому я подумал, что просто изменил заголовок dropFromId на "" на капли, чтобы удалить его.

Ответы

Ответ 1

Использование $(".tipsy").remove(); похоже на трюк, поскольку div с классом tipsy добавляется к телу документа, когда отображается всплывающая подсказка.

Просто убедитесь, что вы не используете класс tipsy в другом месте (т.е. вызывайте свою подсказку как-то вроде toolTip)

Ответ 2

Самый простой способ удалить настойки;

$('.tipsy:last').remove();

Ответ 3

Если вы больше не хотите, чтобы навеселился, просто используйте .tipsy('disable') для элемента.

Если вы используете trigger: manual, и вы хотите скрыть его, вы можете просто удалить div .tipsy на теле.

Там также disable enable и toggleEnabled

Ответ 4

$("#"+dropFromId)[0].setAttribute('original-title', '')

Ответ 5

$("#tipsyfiedElement").unbind('mouseenter mouseleave'); // Or whatever event trigger the tiptool

Ответ 6

Недавно у меня была эта проблема, вот как я ее разрешил:

Используйте это, чтобы установить атрибут исходного названия на "stop":

$('.myElement').attr('original-title','stop');

Затем в jquery.tipsy.js измените код на следующее:

...
} else if (typeof opts.title == 'function') {
    title = opts.title.call(this);
}

if (title != 'stop') {    //line 32
    ...
    ...
}                         //line 62
...

В моем выпуске (0.1.7) добавленный код начинается с строки 32 и заканчивается скобкой в ​​строке 62. Подсказки должны видеть, что ваш атрибут title равен "stop" и не будет пытаться открыть всплывающую подсказку.

Кроме того, это выводит на консоль некоторую ошибку. Это не имеет никакого значения, но если вы хотите избавиться от него, добавьте это в строку 73 (после добавления предыдущего кода)

try { tip.remove(); } catch(err){}

ПР

Ответ 7

Использовать:.unbind('mouseenter mouseleave'); для удаления подвыпившего метода.

Ответ 8

Я увидел этот вопрос после того, как Google разобрал ситуацию, чтобы отключить Connecty, когда на мобильном устройстве из-за сложностей с событием touch/click, особенно на iPad.

Решение, которое я решил реализовать, - это добавить небольшой тест в начало файла jquery.tipsy.js.

Чтобы отключить Tipsy на сенсорных (мобильных) устройствах:   var deviceAgent = navigator.userAgent.toLowerCase();

var isTouchDevice = Modernizr.touch ||
(deviceAgent.match(/(iphone|ipod|ipad)/) ||
deviceAgent.match(/(android)/) ||
deviceAgent.match(/(iemobile)/) ||
deviceAgent.match(/iphone/i) ||
deviceAgent.match(/ipad/i) ||
deviceAgent.match(/ipod/i) ||
deviceAgent.match(/blackberry/i) ||
deviceAgent.match(/bada/i));

function Tipsy(element, options) {
    this.$element = $(element);
    this.options = options;
    this.enabled = !isTouchDevice;
    this.fixTitle();
};

Смотрите: лучший способ определить, поддерживает ли пользовательский агент.

Ответ 9

Простой способ использования:

$('body').find('.tipsy').each(function(){
    $(this).remove();
});