基于窗口宽度的Bootstrap数据放置

时间:2015-05-16 06:52:20

标签: jquery html twitter-bootstrap popover placement

我正在寻找一种简单的方法来根据引导程序中弹出窗口的窗口宽度更改数据放置属性。下面是我当前的html和jquery代码。它可以工作,但是当我调整窗口大小时,我的popover的数据放置不会改变。只有当我用小窗口大小刷新页面时它才真正起作用。

<a class="arrow" id="arrow" data-toggle="popover" data-content=""><span class="glyphicon glyphicon-menu-right" id="glyph"></span></a>

    <script>
    $(window).resize(function(){
   console.log('resize called');
   var width = $(window).width();
   console.log(width);
   if(width < 974){
       $('#glyph').removeClass('glyphicon-menu-right').addClass('glyphicon-menu-down');
       $('#arrow').attr('data-placement','bottom');
       $('.myInfo').css("margin-top", "10px");
       $('.myInfo').css("margin-left", "30px");
   }
   else if(width > 974){
       $('#glyph').removeClass('glyphicon-menu-down').addClass('glyphicon-menu-right');
       $('#arrow').attr('data-placement','right');
       $('.myInfo').css("margin-top", "60px");
       $('.myInfo').css("margin-left", "40px");
   }
})

    .resize();
     </script>

除非我更改页面宽度并再次单击弹出框按钮,否则一切正常。数据放置不会改变。建议?提前谢谢!

1 个答案:

答案 0 :(得分:3)

this question

回答的bchhun重复

将放置位置作为函数传递:

var options = {
    placement: function (context, source) {
        if ($(window).width() < 974) {
            return "bottom";
        } else {
            return "right";
        }
    }
};
$("[data-toggle=popover]").popover(options); 
$(window).resize(function(){
    var width = $(window).width();
    if(width < 974){
        $('#glyph').removeClass('glyphicon-menu-right').addClass('glyphicon-menu-down');
        $('.myInfo').css("margin-top", "10px");
        $('.myInfo').css("margin-left", "30px"); 
    }
    else if(width > 974){
        $('#glyph').removeClass('glyphicon-menu-down').addClass('glyphicon-menu-right');
        $('.myInfo').css("margin-top", "60px");
        $('.myInfo').css("margin-left", "40px"); 
    }
})
.resize();

Bootply表明它正常运作。希望这有帮助!