Twitter Bootstrap Twipsyを、ツールチップ内にリンクがあるホバリングツールチップとして使用しようとしています。
問題は、マウス カーソルが要素から離れると、ツールチップが消え、ユーザーがツールチップ内のリンクに到達できないことです (デモを見て、マウス カーソルを twipsy の黒いバブルに置くことができないことを確認してください。消えます)。
それを修正する方法はありますか?
ありがとう。
Twitter Bootstrap Twipsyを、ツールチップ内にリンクがあるホバリングツールチップとして使用しようとしています。
問題は、マウス カーソルが要素から離れると、ツールチップが消え、ユーザーがツールチップ内のリンクに到達できないことです (デモを見て、マウス カーソルを twipsy の黒いバブルに置くことができないことを確認してください。消えます)。
それを修正する方法はありますか?
ありがとう。
ブートストラップの作成者の 1 人が、これは不可能であると言ったとは信じがたいと思います。
テスト済みで機能している、coffeescriptとjqueryのソリューションは次のとおりです。
timer = null
el = null
el2 = null
$('[rel=twipsy]').live
mouseenter: ->
$('.twipsy').remove()
$(this).twipsy('show')
, mouseleave: ->
el = $(this)
timer = setTimeout((->
el.twipsy('hide')
$('body .twipsy:last-child').remove()
), 10)
$('.twipsy').live
mouseenter: ->
clearTimeout(timer)
el2 = $(this)
el2.css 'z-index', 1000 if el2.hasClass 'in'
, mouseleave: ->
timer = setTimeout((->
el.twipsy('hide')
el2.css 'z-index', 1
$('body .twipsy:last-child').remove()
), 10)
大量のトラフィックが発生するアプリケーション、古いブラウザーや古いコンピューターで動作する必要があるアプリケーション、またはパフォーマンスに非常に依存するアプリケーションで作業している場合は、独自のソリューションをここに導入することを強くお勧めします。本当に素晴らしいアイデアです。ただし、小さい/通常の場合、これは問題なく機能します。特定の方法でホバーすると (まれではありますが) 発生する小さな非常に奇妙なバグが 1 つだけ見つかりました。オーバーラップの問題は、z-index 操作によって解決されます。
これがバニラ JavaScript である必要がある場合は、 http: //coffeescript.org/ の「try coffeescript」コンソールに貼り付けるだけで、コンパイルされます。
ここで本当に必要だったのは、Twitter のポップオーバーだったと思います。
http://twitter.github.com/bootstrap/javascript.html#popovers
ツールチップは、いくつかの情報を表示するためだけに使用されます (そのため、ツールの「ヒント」と呼ばれます)。ユーザーとのやり取りが必要な場合は、ポップオーバーを使用する必要があります。
ここで、ツールチップのホバーを使用して同じことを達成できるのに、なぜユーザーのクリックを増やすのかというユーザビリティの点で疑問が生じるかもしれません。ただし、これにより、ユーザーは対話を行うために必要な時間を制御できます。私の意見では、ユーザビリティが向上します。2 秒以内 (設定されたタイムアウト) にリンクをクリックするようにユーザーに指示することはできません。使い勝手が良くない
この回答のために行われた作業に感謝します。回答は正しいですが、解決策はありません。
私が自分自身を明確にしたことを願っています。
twipsy のトリガーを「手動」に設定し、「mouseenter」などのイベントを、タイマーを使用して閉じる前に数秒待機する関数にバインドできます。これを試して:
$(element).twipsy({
trigger:'manual'
});
$(element).bind('mouseover',function(){
$(element).twipsy('show');
if ( $(element).data('timerIsGoing') !== true ) {
$(element).data('timerIsGoing',true);
setTimeout(function(){
$(element).twipsy('hide');
}, 2000);
}
});
これにより、ユーザーは 2 秒間リンクをクリックすることができます。
また、近くに他のツールチップが重なっている可能性があるという問題に気付きました。マウスオーバー時他のすべてのアクティブなツールチップを非表示にするカスタムイベントをトリガーできます...ちょっと考えただけです
上記の私のコメントを読んで、同じ問題を抱えていると思われる場合は、これがうまくいきました。
ドキュメントで実際に言及されている約300ミリ秒のアニメーションに遅延を設定できます。
私は同じ問題を抱えていましたが、jQuery.js と Prototype.js の両方をロードしました。この問題は、prototype.js がロードされないようにすることで解決します。