javascript - Bootstrap 弹出窗口不起作用

标签 javascript jquery twitter-bootstrap

我试图在单击其他任何地方时隐藏弹出窗口,但不在弹出窗口和按钮上单击

它对于第一种情况工作正常,但之后当它隐藏时,需要两次单击才能显示。我怎样才能一键完成呢?

$('body').on('click', function(e) {

  if ($(e.target).data('toggle') !== 'popover' &&
    $(e.target).parents('.feedsPopup').length == 0 &&
    $(e.target).parents('.popover.in').length === 0)
    $('.feedsPopup').popover('hide');
});

$(document).on('show.bs.popover', '.feedsPopup', function() {

  var popup = $(this);

  $(popup).attr('data-content', 'coooooooool');

});




$('#myid').html('<button type="button" class="btn btn-secondary feedsPopup"  data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">Popover on top</button><button type="button" class="btn btn-secondary feedsPopup"  data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">Popover on top</button>')

$('.feedsPopup').popover();
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>

<body style="border:1px solid red;">
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <div id="myid"></div>

</body>

而且我还试图隐藏所有其他弹出窗口并仅显示我正在执行的一个 $('.feedsPopup').popup('hide'); 然后 $(this ).popup('show'); on feedsPopup 的 click 方法 但如果我这样做,它也会隐藏当前的弹出窗口,因此不会显示弹出窗口。

最佳答案

为什么不让它变得简单并像这样触发按钮点击:

var popup = [{
  id: 'button1',
  open: false
}, {
  id: 'button2',
  open: false
}];

$('body').on('click', function(e) {
  if ($(e.target).data('toggle') !== 'popover' && !$(e.target).hasClass('popover-content')) {
    for (var i in popup) {
      if (popup[i].open) {
        popup[i].open = false;
        $("#" + popup[i].id).trigger('click')
      }
    }
  }
});

$(document).on('show.bs.popover', '.feedsPopup', function() {
  for (var i in popup) {
    if ($(this).attr('id') == popup[i].id) {
      popup[i].open = true;
      console.log(popup[i].open)
    }
  }
  $(this).attr('data-content', 'coooooooool');
});

$('#myid').html('<button type="button" class="btn btn-secondary feedsPopup"  data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">Popover on top</button><button type="button" class="btn btn-secondary feedsPopup"  data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">Popover on top</button>')

$('button').each(function(i) {
  $(this).attr('id', popup[i].id)
})

$('.feedsPopup').popover();
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>

<body style="border:1px solid red;">
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <div id="myid"></div>

</body>

关于javascript - Bootstrap 弹出窗口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873741/

相关文章:

javascript - float 图像

jquery - 如何分离 HTML 折叠列表中的超链接?

javascript - AngularJS 服务/工厂从 $scope 变量动态 $compile HTML

javascript - 相对指针位置

javascript - 将 postgresQL 中的时间戳附加到数组时间戳列

javascript - 计时器应该为 jquery 中的 for 循环中的每个元素开始和结束

javascript - 在转换后的 UL 列表中添加选择选项

javascript - 如何在单击多个按钮时更改按钮颜色

html - Bootstrap 网格不适合我的主容器

javascript - 如何正确地进行 Bootstrap 选项卡替换?