$(function() {
$('.tip_trigger').each(function() {
var tip = $(this).find('.tip');
$(this).hover(
function() { tip.appendTo('body'); },
function() { tip.appendTo(this); }
).mousemove(function(e) {
var x = e.pageX + 20,
y = e.pageY + 20,
w = tip.width(),
h = tip.height(),
dx = $(window).width() - (x + w),
dy = $(window).height() - (y + h);
if ( dx < 20 ) x = e.pageX - w - 20;
if ( dy < 20 ) y = e.pageY - h - 20;
tip.css({ left: x, top: y });
});
});
});
Демонстрационная версия: http://jsfiddle.net/vNBNz/4/
Как видите, приведенный выше код работает.В демонстрационной версии обратите внимание на это правило CSS:
.tip_trigger .tip { display:none; }
Приведенное выше правило будет скрывать все элементы .tip
, но только если они находятся внутри элемента .tip_trigger
.Это означает, что как только вы добавите элемент .tip
в ТЕЛО, он будет отображаться, потому что «правило скрытия» применяется только к .tip
элементам внутри .tip_trigger
.