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