3

以下の質問と回答から、JavaScript で .popover("show") を呼び出すと非表示オプションが機能しないことがわかりました。

Twitter Bootstrap ポップアップは遅延を無視します

しかし、マウスのクリックによってポップオーバーがトリガーされたときに機能するはずではありませんか?

以下の jsFiddle では、テキストをクリックするとポップオーバーが表示されます。しかし、遅れても隠れません。

$("#clickMe").popover({
    content: "Hello world",
    delay: { show : 100 , hide : 1000 }
});

.

   <span id="clickMe">Click me</span>

http://jsfiddle.net/ahmed002/cwpB9/

この場合、遅延が機能しないことが予想されますか (そうであれば、このオプションは機能しますか)?

4

2 に答える 2

0

辛抱してください:)遅延時間はミリ秒単位であり、フィドルでも機能します。より長い時間を使用し、1 回クリックして待機し (10 秒)、もう一度クリックしてもう一度 10 秒待機します。

$("#clickMe").popover({
            content: "Hello world",
            delay: { show : 10000 , hide : 10000}
      });

トリガーを手動に設定すると、遅延設定は機能しません (「How can I use 'manual' as a trigger option for popovers in the Twitter Bootstrap framework?」を参照してください) 。

于 2013-10-16T18:38:28.420 に答える
0

Bootstrap の非表示オプションは自動非表示遅延ではありません -> 残念ながら、ユーザーはクリックしてポップオーバーを非表示にする必要があります。その後、ブートストラップの非表示オプションをクリックすると、非表示が遅延します。

ポップオーバーを自動的に非表示にする場合は、次のコードを使用します。自動非表示でブートストラップ ポップオーバーを配置する新しい jQuery 関数を定義します。

/****** Defines new jQuery functions */
jQuery.fn.extend({
    popoverWithAutoHide: function (popoverText) {
        $(this).popover({
            content : popoverText
        }).on('shown.bs.popover', function () {
            var $this = $(this); // CLosure
            setTimeout(function() {
                 $this.popover("hide");
            }, 3000);
        });
    }
});

基本的に、ポップオーバーが表示されるとすぐに追加機能をアクティブにします。その関数は jQuery setTimeout を呼び出して、3000 ミリ秒後に 3 番目の関数を呼び出します。その 3 番目の関数は、ポップオーバーを閉じます。

使い方はとても簡単です:

$("#editButton").popoverWithAutoHide("To edit items, you need to be logged in and have a rank 5 or higher.");
于 2013-10-29T13:43:23.787 に答える