ブートストラップのツールチップに問題があります。ボタンをクリックすると、カーソルがボタンの外側にある場合でもツールチップが残ります。私はマニュアルを調べました- Bootstrapのツールチップ ボタンをクリックした場合、同じ問題が発生します。これを修正する解決策はありますか?最新のFF、IEで試しました。
これは、trigger
が設定されていないためです。トリガーのデフォルト値は'hover focus'
であるため、ボタンがfocused
であるため、ボタンがクリックされた後、別のボタンがクリックされるまで、ツールチップは表示されたままになります。
したがって、あなたがしなければならないことは、trigger
を'hover'
としてのみ定義することです。ボタンをクリックした後、ツールチップを保持せずにリンクした同じ例の下:
$('[data-toggle="tooltip"]').tooltip({
trigger : 'hover'
})
フィドルのドキュメントの例->http://jsfiddle.net/vdzvvg6o/
私は1年以上前に知っていますが、ここの例でこれを動作させることはできませんでした。次を使用する必要がありました。
$('[rel="tooltip"]').on('click', function () {
$(this).tooltip('hide')
})
また、ホバーするとツールチップが再び表示されます。
私の場合、問題はInternet Explorerでのみ再現されました。どの要素(input、divなど...)にtooltip-クリックされた場合でもツールチップが表示されたままです。
要素クリックイベントでツールチップを表示する.hide()を推奨するいくつかのソリューションを見つけました-しかし、それは悪いアイデアです-同じ要素に戻ってホバリング-それを非表示に保ちます...私の場合
$('.myToolTippedElement').on('click', function () {
$(this).blur()
})
すべての魔法を作りました!!!-.myToolTippedElementは、ツールチップのコースを持つ要素です...
こんにちは、私はこの問題の解決策がほとんどありません。他のソリューションが機能しない場合は、これを試してください:
$('body').tooltip({
selector: '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])',
trigger: 'hover',
container: 'body'
}).on('click mousedown mouseup', '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])', function () {
$('[data-toggle="tooltip"], [title]:not([data-toggle="popover"])').tooltip('destroy');
});
これもドラッグアンドドロップの解決策です。だから、これが誰かを助けることを願っています:)
上記のデイビッドの答えは私の問題を解決するのに役立ちました。ボタンにホバーイベントとクリックイベントの両方がありました。 MAC上のFirefoxは、私が望んだとおりに動作しました。つまり、ホバー時にツールチップを表示し、クリックに対してツールチップを表示しません。他のブラウザーやOSでは、クリックするとツールチップが表示され、表示されたままになります。ホバーのためにマウスを他のボタンに移動しても。これは私が持っていたものです:
$('[data-toggle="tooltip"]').tooltip({placement: 'right', html: true});
これは修正です:
$('[data-toggle="tooltip"]').tooltip({placement: 'right', html: true, trigger: 'hover'});
私の場合は、rel="tooltip"
の代わりにdata-toggle="tooltip"
を使用してみてください。 data-toggle="tooltip"
を使用していて、トリガー条件をホバーとして設定しましたが、これは私の場合は機能しませんでした。データセレクターを変更すると、機能しました。
HTMLコード:
<button id="submit-btn" type="submit" class="btn btn-success" rel="tooltip" title="Click to submit this form">Submit</button>
JSコード // Tooltip $( '。btn')。tooltip({trigger: 'hover'});
これにより、スタックしたツールチップが確実に削除されます。
以下を追加することもできます。
onclick="this.blur()"
angular 7でbootstrap 4とjqueryを使用すると、これが見つかり、正常に動作します。破棄してもツールチップが非表示にならないため、破棄を使用しました。
ngAfterViewChecked() {
$('[data-toggle="tooltip"]').tooltip({
trigger: 'hover'
});
$('[data-toggle="tooltip"]').on('mouseleave', function () {
$(this).tooltip('dispose');
});
$('[data-toggle="tooltip"]').on('click', function () {
$(this).tooltip('dispose');
});
}
この問題を修正する方法は、次のコードを使用してクリックイベント関数のツールチップを削除することでした。
$("#myButton").on("click", function() {
$("div[role=tooltip]").remove();
});
文書準備機能内でこれを使用します
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip({
trigger : 'hover'
});
});
このソリューションは私のために働いた。
$('a[data-toggle="tooltip"]').tooltip({
animated: 'fade',
placement: 'bottom',
trigger: 'click'
});
$('a[data-toggle="tooltip"]').click(function(event){
event.stopPropagation();
});
$('body').click(function(){
$('a[data-toggle="tooltip"]').tooltip('hide');
});
私は以前の回答で与えられた解決策のほとんどを試しましたが、それらのどれも私のために働きませんでした。
私の問題はDataTableにあります。以下のコードは私のために機能します。
columnDefs: [ { targets: 0, data: "id", render: function (data, type, full, meta) { return '<a href="javascript:;" class="btn btn-xs btn-default" data-toggle="tooltip" title="Pending" data-container="body"><i class="fa fa-check"></i></a>'; } } ], drawCallback: function() { $('[data-toggle="tooltip"]').tooltip(); $('[data-toggle="tooltip"]').on('click', function () { $(this).tooltip('hide'); }); }
以下のメソッドを使用して、mouseleaveのツールチップを非表示にすることもできます。
jQuery("body").on("mouseleave", ".has-tooltip", function(){
jQuery(this).blur();
});
これは私のために働く:
$(document).ready(function() {
$('#save').tooltip({
trigger : 'hover'
}) ;
});
問題があったとき、私は動的に保存ボタンを無効にしていました。
実用的なソリューション
$(document).on("click",function()
{
setTimeout(function()
{
$('[data-toggle="tooltip"]').tooltip('hide');
},500); // Hides tooltip in 500 milliseconds
});
Cycle.jsでbootstrapツールチップを使用していますが、上記のいずれも機能しませんでした。
私はこれをしなければなりませんでした:
return button( selector + '.btn.btn-sm',
{
hook: {
destroy: tooltipOff,
insert: toggleTooltipOn,
},
....
function toggleTooltipOn(vnode){
setupJQuery();
jQuery[0].$( vnode.Elm )
.tooltip({container:'body', trigger: 'hover');
//container:body is to help tooltips not wiggle on hover
//trigger:hover is to only trigger on hover, not on click
}
function tooltipOff( vnode ){
setupJQuery();
jQuery[0].$( vnode.Elm ).tooltip('hide');
}
私の場合、これは修正でした:
beforeDestroyingElement() {
$('[data-toggle="tooltip"]').tooltip('hide');
}
私はBootstrap docsからこの規則に従わなかった:
ツールチップは、対応する要素をDOMから削除する前に非表示にする必要があります。