Хорошо, у меня наконец было время вернуться к этому, и вот что я остановился на этом. Я вполне доволен этим в целом; Единственная проблема, которую я заметил, - если у вас есть элемент с всплывающей подсказкой в правом нижнем углу окна, так что подсказка не имеет места для отображения между элементом и границей окна, он появится сверху элемент и начинает мерцать, когда фокус переходит между элементом и всплывающим окном. Приветствуются советы по решению этой проблемы или общие замечания по моему стилю JS (я раньше писал очень мало JS-кода).
Функция JavaScript:
function showInfoBox(parent_index, parent) {
var parent_id = $(this).attr('id');
var infobox_id = parent_id+"_ib";
$("body").append("<div class='infobox' id='"+infobox_id+"'><p>This is an infobox for "+parent_id+"</p></div>"); //customize here
var infobox = $("#"+infobox_id);
$(this).mousemove(function(e){
var pad = 10;
var x = Math.min(e.pageX + pad, $(window).width() - infobox.width() - pad);
var y = Math.min(e.pageY + pad, $(window).height() + $(window).scrollTop() - infobox.height() - pad);
infobox.css({
top: y + 'px',
left: x + 'px'
});
})
.hover(function(){
infobox.show();
}, function(){
infobox.hide();
});
};
JQuery для вызова при загрузке документа:
$(".SELECTOR-FOR-STUFF-TO-GET-INFOBOXES").each(showInfoBox);
Требуемый CSS:
.infobox { display:none; position:absolute; z-index:999; /* more CSS if you like */}