さて、ようやくこれを再検討する時間ができたので、ここに落ち着きました。全体的にとても満足しています。私が気付いた唯一の問題は、ウィンドウの右下隅にツールチップを持つ要素がある場合、ツールチップが要素とウィンドウの境界線の間に表示される余地がなく、その上に表示されることです。要素とポップアップの間でフォーカスが変わると、要素がちらつき始めます。これを解決するためのヒント、または私の 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 */}