this.t = this.attr("href");
this
- это узел DOM, а не оболочка jQuery: здесь нет метода attr()
.
(я также не понимаю, почему вы пишете в эксплоо t
свойство на узле. Вы, кажется, не используете его где-либо еще.)
$("body").append("<p id='tooltip'>"+ this.t +"</p>");
Старайтесь не создавать строки HTML из простого текста.Любые символы &
или <
в t
и ваш HTML испорчены.(Это простой способ пропустить дыры в безопасности межсайтовых сценариев.) Вместо этого используйте text()
для установки простого текстового содержимого в элементе.
(Хотя я не уверен, почему вызапись значения атрибута #
во всплывающую подсказку. Вы пытаетесь прочитать HTML-код div с всплывающей подсказкой и скопировать его в p
? Почему бы просто не использовать сам div с всплывающей подсказкой?)
Подсказка div (# tooltip-1) не скрывается при наведении мыши.
Она вообще не скрывается / не отображается, ваш сценарий нигде не касается.
Так как div всплывающей подсказки всегда будет иметь тот же идентификатор, что и REL
Как насчет помещения этой информации во фрагмент href
вместо злоупотребления rel
?Тогда ссылка на самом деле указывает на место, где она будет всплывать.
Например.что-то вроде:
<a href="#footnote1" class="tooltip">?</a>
<div id="footnote1" style="background: yellow; width: 10em;">
Hello!
</div>
$('.tooltip').each(function() {
var tip= $(this.hash);
var dx= -30, dy= -tip.height()-10;
tip.css('position', 'absolute');
tip.hide();
function position(e) {
tip.css('left', e.pageX+dx+'px').css('top', e.pageY+dy+'px');
}
$(this).mousemove(position);
$(this).hover(function(e) {
position(e);
tip.show('fast');
}, function(e) {
tip.hide('fast');
});
});
(или просто используйте один из множества уже существующих плагинов подсказок jQuery.)