【问题标题】:Using a bootstrap popover as a modal使用引导弹出框作为模式
【发布时间】:2014-06-23 21:50:46
【问题描述】:

我使用了搜索,关于引导弹出框有很多问题,但我有一个特殊问题。

很多人问如何修复弹出框,但我希望我的弹出框具有与引导程序“模态”相同的功能(从顶部出现的东西,让屏幕变暗,你必须退出它才能返回网站)。必须单击我的弹出框,然后它会出现并一直存在,直到您单击其他任何地方,如果您知道我的意思。

【问题讨论】:

  • 你为什么不首先使用模态?我想根据您的需要定制它可能比破解弹出框像模态一样更容易。
  • 问题是,它不应该完全像一个模态,它应该只在点击时出现,当你点击其他任何地方时消失,没有黑屏等。模态只是一个例子。

标签: javascript html twitter-bootstrap fixed popover


【解决方案1】:

正如我在评论中所说:

为什么不首先使用模态?我想根据您的需要定制它可能比破解弹出框像模态一样更容易

this issue on Github@Fat 建议改用焦点触发方式。 但是我刚刚意识到我曾经在一个项目中遇到过同样的问题,我通过挂钩可用事件并执行一个小技巧来解决它:

$( '.popover-element' )
    .on( 'show.bs.popover', function ( e ) {
        $( 'body' ).one( 'click', function ( e ) {
            if ( !$( e.target ).parents( '.popover-element' ).length ) {
                // After the popover has been opened we catched a
                // click event that bubbled up to the body element.
                // Since the .popover-element is not a parent of the
                // element (.length === 0) that originated this event
                // we can assume that the user clicked outside of it 
                // and can thus close the popover.
                $( '.popover-element ).popover( 'hide' );
            }
        } );
    } );

另见event.targetpopover documentation(尤其是方法和事件)。


这是一个应该与您的源兼容的版本:

$( '[rel=popover]' )
    .popover( {
        trigger: 'hover',
        html:    true,
        delay:   500      
    } )
    .on( 'show.bs.popover', function ( e ) {
        var $popover = $( this );
        $( 'body' ).one( 'click', function ( e ) {
            if ( !$( e.target ).parents().filter( $popover ).length ) {
                $popover.popover( 'hide' );
            }
        } );
    } );

【讨论】:

  • 好的,但是“.popover-element”是干什么用的?
  • .popover-element 是您使用 Bootstrap 将其转换为弹出框的 DOM 元素。这应该与您调用 .popover() 的元素相同;在。您可能希望为所有弹出框添加一些通用类并用它更新 sn-p(用正确的选择器替换 .popover-element),以便确保所有弹出框都被此修复程序一次性覆盖。跨度>
  • 我正在使用这个:$('[rel=popover]').popover( { trigger: 'hover', // click | hover | focus | manual html: true, delay: 500, });,然后我所有的弹出框都在使用这种关系rel="popover",现在我不知道如何实现你的版本:/
  • 我用应该与你的兼容的代码更新了我的答案。您只需将您的代码替换为我上面发布的代码即可。
  • 好的,现在点击任何地方都会消失,现在我想修复它“直到”你点击其他任何地方:D(我上周开始使用javascript,我认为如果我能正常写的话会很容易java) 是否有任何属性来设置“淡出时间”
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多