期待されています。TB tooltip
/関連する要素およびpopover
に基づいて位置を計算します。Option にはそのようなプロパティはありません。offsetWidth
offsetHeight
popover
body
ただし、それ自体のポップオーバーを配置できますselect
。選択用にバインドmouseover
します。そこから、ホバーされているデータ属性が入力されたポップオーバーが右側に表示option
されます。
HTML、クリーンアップ、rel="popover"
および"data-original-title"
<select size="4" id="testList">
<option value="1" data-title="This is item 1." data-content="Lots of stuff to say 1" style="color:red;">Item 1</option>
<option value="2" data-title="This is item 2." data-content="Lots of stuff to say 2" style="color:green;">Item 2</option>
<option value="3" data-title="This is item 3." data-content="Lots of stuff to say 3" style="">Item 3</option>
<option value="4" data-title="Blah" data-content="Lots of stuff to say 4" style="color:orange;">Item 4</option>
</select>
マウスオーバーのバインド、オプション データ属性の収集、ポップオーバーの表示
$("#testList").on('mouseover', function(e) {
var $e = $(e.target);
if ($e.is('option')) {
$('#testList').popover('destroy');
$("#testList").popover({
trigger: 'manual',
placement: 'right',
title: $e.attr("data-title"),
content: $e.attr("data-content")
}).popover('show');
}
});
いくつかのクリーンアップにより、選択を終了するとポップオーバーが消えます
$("#testList").on('mouseleave', function(e) {
$('#testList').popover('destroy');
});
オプションリストのほうがはるかにうまくいくとは思いません:)ポップオーバーが各オプションの垂直位置にインデックスで多かれ少なかれ従うように強制するのに苦労する可能性があります。template
フォークされたコードhttp://jsfiddle.net/mM8sx/
更新- Windows 上の IE と Chrome の問題。
この回答への参照をいくつか見たことがありますが、Windows 上の IE および Chrome では機能していなかったことを指摘しています。これは、Windows では<option>
要素がマウス イベントをまったく受け取らないという事実によるものです。これは、上記の回答の「ハック」であり、「クロスブラウザー」になっています。
Windows 上の Chrome、FF、IE、および Safari で正常にテストされています。Ubuntu 上の Chrome、FF、Opera。アイデアは、オプションのマウスイベント/高さに<option>
基づいてインデックスを計算することにより、(マウスオーバーではなく)正しいマウス移動をターゲットにすることです。clientY
$("#testList").on('mousemove', function(e) {
if (!isWindows) {
var $e = $(e.target);
} else {
var newIndex = Math.floor(e.clientY/optionHeight);
if (newIndex === index) return;
index = newIndex;
$e = $(this).find('option:eq('+index+')');
}
if ($e.is('option')) {
$('#testList').popover('destroy');
$("#testList").popover({
trigger: 'manual',
placement: 'right',
title: $e.attr("data-title"),
content: $e.attr("data-content")
}).popover('show');
}
});
詳細についてはフィドルを参照してください - > http://jsfiddle.net/LfrPs/