onmouseover
イベントが発生したときにポップアップできる「バブル」を作成しようとしています。イベントをスローしたアイテムonmouseover
の上にマウスがあるか、マウスがバブルに移動した場合、開いたままになります。私のバブルには、ハイパーリンクや画像など、HTMLとスタイルのすべての方法が必要です。
基本的にこれを約200行の醜いJavaScriptを書くことで達成しましたが、jQueryプラグイン、またはこれを少し整理する他の方法を本当に見つけたいです。
onmouseover
イベントが発生したときにポップアップできる「バブル」を作成しようとしています。イベントをスローしたアイテムonmouseover
の上にマウスがあるか、マウスがバブルに移動した場合、開いたままになります。私のバブルには、ハイパーリンクや画像など、HTMLとスタイルのすべての方法が必要です。
基本的にこれを約200行の醜いJavaScriptを書くことで達成しましたが、jQueryプラグイン、またはこれを少し整理する他の方法を本当に見つけたいです。
回答:
Qtipは私が見た中で最高のものです。MITライセンスで美しく、必要な構成がすべて揃っています。
私のお気に入りの軽量オプションはほろ酔いです。MITもライセンス供与。これは、Bootstrapのツールチッププラグインに影響を与えました。
これは、マウスオーバーイベントでも簡単に実行できます。私はそれをやった、そしてそれはまったく200行をとらない。最初にイベントをトリガーしてから、ツールチップを作成する関数を使用します。
$('span.clickme').mouseover(function(event) {
createTooltip(event);
}).mouseout(function(){
// create a hidefunction on the callback if you want
//hideTooltip();
});
function createTooltip(event){
$('<div class="tooltip">test</div>').appendTo('body');
positionTooltip(event);
};
次に、マウスオーバーイベントをトリガーしたDOM要素のオフセット位置でツールチップを配置する関数を作成します。これはcssで実行できます。
function positionTooltip(event){
var tPosX = event.pageX - 10;
var tPosY = event.pageY - 100;
$('div.tooltip').css({'position': 'absolute', 'top': tPosY, 'left': tPosX});
};
'top': tPosY + 'px'
等々。
qTip(受け入れられた答え)は良いですが、私はそれを使い始めました、そしてそれは私が必要とするいくつかの機能を欠いていました。
それから私はPoshyTipに出会いました -それは非常に柔軟で、本当に使いやすいです。(そして私は必要なことをすることができました)
わかりました、いくつかの作業の後、私は「バブル」をポップアップして、すべての適切なタイミングで立ち去ることができます。まだ発生する必要がある多くのスタイルがありますが、これは基本的に私が使用したコードです。
<script type="text/javascript">
//--indicates the mouse is currently over a div
var onDiv = false;
//--indicates the mouse is currently over a link
var onLink = false;
//--indicates that the bubble currently exists
var bubbleExists = false;
//--this is the ID of the timeout that will close the window if the user mouseouts the link
var timeoutID;
function addBubbleMouseovers(mouseoverClass) {
$("."+mouseoverClass).mouseover(function(event) {
if (onDiv || onLink) {
return false;
}
onLink = true;
showBubble.call(this, event);
});
$("." + mouseoverClass).mouseout(function() {
onLink = false;
timeoutID = setTimeout(hideBubble, 150);
});
}
function hideBubble() {
clearTimeout(timeoutID);
//--if the mouse isn't on the div then hide the bubble
if (bubbleExists && !onDiv) {
$("#bubbleID").remove();
bubbleExists = false;
}
}
function showBubble(event) {
if (bubbleExists) {
hideBubble();
}
var tPosX = event.pageX + 15;
var tPosY = event.pageY - 60;
$('<div ID="bubbleID" style="top:' + tPosY + '; left:' + tPosX + '; position: absolute; display: inline; border: 2px; width: 200px; height: 150px; background-color: Red;">TESTING!!!!!!!!!!!!</div>').mouseover(keepBubbleOpen).mouseout(letBubbleClose).appendTo('body');
bubbleExists = true;
}
function keepBubbleOpen() {
onDiv = true;
}
function letBubbleClose() {
onDiv = false;
hideBubble();
}
//--TESTING!!!!!
$("document").ready(function() {
addBubbleMouseovers("temp1");
});
</script>
以下は、それに付随するhtmlのスニペットです。
<a href="" class="temp1">Mouseover this for a terribly ugly red bubble!</a>
便利なjQueryプラグインをプログラミングして、jQueryのコード行だけで簡単にスマートなバブルポップアップを作成しました!
あなたができること:-任意のDOM要素にポップアップを添付してください!-マウスオーバー/マウスアウトイベントが自動的に管理されます!-カスタムポップアップイベントを設定!-スマートな影付きのポップアップを作成してください!(IEでも!)-実行時にポップアップのスタイルテンプレートを選択してください!-ポップアップ内にHTMLメッセージを挿入!-距離、速度、遅延、色など、多くのオプションを設定します
ポップアップの影と色分けされたテンプレートは、Internet Explorer 6以降、Firefox、Opera 9以降、Safariで完全にサポートされています
ソースはhttp://plugins.jquery.com/project/jqBubblePopupからダウンロードできます。
QTipにはjQuery 1.4.2に関するバグがあります。jQuery Bubble Pop up http://www.vegabit.com/jquery_bubble_popup_v2/#examplesに切り替える必要がありましたが、うまくいきました。
マウスオーバーイベントは必要ありません。jQueryhover()イベントが必要です。
そして、あなたが望んでいるように見えるのは「豊富な」ツールチップです。その場合は、jQueryツールチップをお勧めします。bodyHandlerオプションを使用すると、任意のHTMLを配置できます。
私は、onmouseoverイベントが発生したときにポップアップできる「バブル」を作成しようとしています。onmouseoverイベントをスローしたアイテムの上にマウスがあるか、マウスがバブルに移動した場合、開いたままになります。私のバブルには、ハイパーリンクや画像など、HTMLとスタイルのすべての方法が必要です。
このプラグインによって完全に管理されているすべてのイベント...
jQuery Bubble Popupプラグインの新しいバージョン3.0は、jQuery v.1.7.2をサポートしています。これは、現在最も有名なjavascriptライブラリの最新の安定したバージョンです。
3.0バージョンの最も興味深い機能は、jQuery&Bubble Popupプラグインを他のライブラリやScript.aculo.us、Mootols、PrototypeなどのJavaScriptフレームワークと一緒に使用できることです。
jQuery Bubble Popupがテストされ、多くの既知および「不明」ブラウザをサポートしています。完全なリストについては、ドキュメントを参照してください。
以前のバージョンと同様に、jQuery Bubble PopupプラグインはMITライセンスの下で引き続きリリースされます。著作権ヘッダーがそのまま残っている限り、商用または個人プロジェクトでjQuery Bubble Popupを自由に使用できます。
最新バージョンをダウンロードするか、http://www.maxvergelli.com/jquery-bubble-popup/でライブデモとチュートリアルにアクセスして ください。
シンプルなポップアップバブルの自動サイズ変更
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="bubble.css" type="text/css" rel="stylesheet" />
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="bubble.js"></script>
</head>
<body>
<br/><br/>
<div class="bubbleInfo">
<div class="bubble" title="Text 1">Set cursor</div>
</div>
<br/><br/><br/><br/>
<div class="bubbleInfo">
<div class="bubble" title="Text 2">Set cursor</div>
</div>
</body>
</html>
bubble.js
$(function () {
var i = 0;
var z=1;
do{
title = $('.bubble:eq('+i+')').attr('title');
if(!title){
z=0;
} else {
$('.bubble:eq('+i+')').after('<table style="opacity: 0; top: -50px; left: -33px; display: none;" id="dpop" class="popup"><tbody><tr><td id="topleft" class="corner"></td><td class="top"></td><td id="topright" class="corner"></td></tr><tr><td class="left"></td><td>'+title+'</td><td class="right"></td></tr><tr><td class="corner" id="bottomleft"></td><td class="bottom"><img src="bubble/bubble-tail.png" height="25px" width="30px" /></td><td id="bottomright" class="corner"></td></tr></tbody></table>');
$('.bubble:eq('+i+')').removeAttr('title');
}
i++;
}while(z>0)
$('.bubbleInfo').each(function () {
var distance = 10;
var time = 250;
var hideDelay = 500;
var hideDelayTimer = null;
var beingShown = false;
var shown = false;
var trigger = $('.bubble', this);
var info = $('.popup', this).css('opacity', 0);
$([trigger.get(0), info.get(0)]).mouseover(function () {
if (hideDelayTimer) clearTimeout(hideDelayTimer);
if (beingShown || shown) {
// don't trigger the animation again
return;
} else {
// reset position of info box
beingShown = true;
info.css({
top: -40,
left: 10,
display: 'block'
}).animate({
top: '-=' + distance + 'px',
opacity: 1
}, time, 'swing', function() {
beingShown = false;
shown = true;
});
}
return false;
}).mouseout(function () {
if (hideDelayTimer) clearTimeout(hideDelayTimer);
hideDelayTimer = setTimeout(function () {
hideDelayTimer = null;
info.animate({
top: '-=' + distance + 'px',
opacity: 0
}, time, 'swing', function () {
shown = false;
info.css('display', 'none');
});
}, hideDelay);
return false;
});
});
});
bubble.css
/* Booble */
.bubbleInfo {
position: relative;
width: 500px;
}
.bubble {
}
.popup {
position: absolute;
display: none;
z-index: 50;
border-collapse: collapse;
font-size: .8em;
}
.popup td.corner {
height: 13px;
width: 15px;
}
.popup td#topleft {
background-image: url(bubble/bubble-1.png);
}
.popup td.top {
background-image: url(bubble/bubble-2.png);
}
.popup td#topright {
background-image: url(bubble/bubble-3.png);
}
.popup td.left {
background-image: url(bubble/bubble-4.png);
}
.popup td.right {
background-image: url(bubble/bubble-5.png);
}
.popup td#bottomleft {
background-image: url(bubble/bubble-6.png);
}
.popup td.bottom {
background-image: url(bubble/bubble-7.png);
text-align: center;
}
.popup td.bottom img {
display: block;
margin: 0 auto;
}
.popup td#bottomright {
background-image: url(bubble/bubble-8.png);
}
Tiptipも素晴らしいライブラリです。
これにはqTipを使用できます。ただし、マウスオーバーイベントでそれを起動するには、少しコーディングする必要があります。テキストフィールドにデフォルトの透かしが必要な場合は、透かしプラグインを使用する必要があります...
これは多くの反復的なコードにつながることに気づきました。そのため、情報ポップアップをフォームフィールドに簡単に添付できるようにするqTipの上にプラグインを作成しました。あなたはそれをここでチェックすることができます:https://bitbucket.org/gautamtandon/jquery.attachinfo
お役に立てれば。