JQueryUI(1.9)の新しいバージョンには、ネイティブのツールチップウィジェットが付属しています。それでテストした後、コンテンツ(title属性の値)が短い場合は正常に機能します。ただし、コンテンツが長い場合、ツールチップが表示されると、入力テキストと重なります。
公式サイトには a demo があります。
マウスカーソルをYour ageテキスト<input>
、表示されるツールチップはテキスト入力とオーバーラップします。これがウィジェットの望ましい動作かどうかはわかりません。テキスト入力の右側にとどまり、必要に応じて行を分割してください。
Edit:positionのjQueryUI v1.10を使用するようにデモが更新されたため、デモページには元の問題が表示されなくなりましたコードが更新され、ツールチップがより適切に配置されました- http://api.jqueryui.com/tooltip/#option-position を参照してください
jsFiddleの元の問題のデモ を再作成しました。
ツールチップの placement はjQueryUI Positionオブジェクトによって制御され、デフォルト設定は次のとおりです。
_{ my: "left+15 center", at: "right center", collision: "flipfit" }
_
Position オブジェクト、特にcollision
属性を変更して、コントロールを他の場所に強制的に配置できます。 。ツールチップのデフォルトはflipfitです。これは、デフォルト(右側)が収まらない場合は左側flipになりますその位置を試してみて、それが何にも衝突しない場合は、コントロールをウィンドウのエッジから離してfitにしてみてください。その結果、今では_<input>
_と衝突します。長いツールチップを強制的にラップするオプションはないようです。
ただし、コンテンツをラップする方法は2つあります。
_max-width
_を使用してカスタムCSSクラスを構成に追加して、強制的にラップします。次に例を示します。
JavaScript
_$('input').tooltip({
tooltipClass:'tooltip'
});
_
CSS
_.tooltip {
max-width:256px;
}
_
または、タイトル属性にハード改行_<br/>
_を挿入します。たとえば、
_title="Lorem ipsum dolor sit amet,<br/>consectetur adipisicing elit"
_
Edit:したがって、jQueryUIはツールチップcontentオプションをv1.9とv1.10の間で変更したようです( 変更ログ による)。参考のため、ここに違いがあります。
v1.9.2
_content: function() {
return $( this ).attr( "title" );
}
_
v1.10
_content: function() {
// support: IE<9, Opera in jQuery <1.7
// .text() can't accept undefined, so coerce to a string
var title = $( this ).attr( "title" ) || "";
// Escape title, since we're going from an attribute to raw HTML
return $( "<a>" ).text( title ).html();
}
_
したがって、次のように.tooltip()
を使用して、title属性の_<br/>
_タグをエスケープしない古い機能を戻すことができます。
_$('input').tooltip({
content: function() {
return $(this).attr('title');
}
});
_
また、 jsFiddle demo を参照してください。
これは最新のjquery/jqueryuiでそれを行うための私のトリックです
ツールチップを持ちたいすべてのアイテムにはクラス 'jqtooltip'があり、タイトルタグがあり、タイトルには行区切りのパイプ文字があると仮定しています。
$('.jqtooltip').tooltip({
content: function(callback) {
callback($(this).prop('title').replace('|', '<br />'));
}
});
@Taruのソリューションに似たjQuery 2.1.1のソリューションがあります。
基本的に、ツールチップのコンテンツ呼び出しを使用して、要素からデータを動的に取得する必要があります。要素自体には、任意のhtmlマークアップを含めることができます。インポートする必要があることに注意してください
それで、onload、私はこれをします:
$(function() {
$( document ).tooltip({
content:function(){
return this.getAttribute("title");
}
});
});
そして、私の例の要素はこれです:
<div title="first<br/>second<br/>">hover me</div>
これは動作します:
[〜#〜] html [〜#〜]
<div class="produtos">
<div class="produtos_imagem">
<img src="imagens/teste/7.jpg" width="200" title="Código: 00122124<br /><br />Descrição: AB PNEU 700 X 23 FOLD CORPRO<br /><br />Unidade: PN<br /><br />Marca : PNEU"/>
</div>
<p class="produtos_titulo">AB PNEU 700 X 23 FOLD CORPRO</p>
</div>
JavaScript
$(document).tooltip({
content: function() {
var element = $( this );
if ( element.is( "[title]" ) ) {
return element.attr( "title" );
}
},
position: {
my: "center bottom-20",
at: "center top"
}
});