当我单击同一div或在div之外时,如何隐藏和切换popover元素?

时间:2018-10-04 14:25:37

标签: javascript jquery twitter-bootstrap

如果在包含弹出框的div元素之外单击并且在包含弹出框的任何其他div上单击,则尝试切换popover元素。         我浏览了其他没有帮助的帖子,或者无法弄清楚如何在我的方案中实施。

我的html

<div id="myTableDiv">
  <table id="myTable">
    <tr>
      <td>Product</td>
      <td>Qty</td>
    </tr>
    <tr>
      <td>
        <div class="popUpClass" rel="popover" data-content="" data-reason="returnded reason is factory damage">
          <span style="margin-right:5px">shirt</span>
          <i class="glyphicon glyphicon-exclamation-sign" style="font-size:12px; color:red"></i>
        </div>
      </td>
      <td>5</td>
    </tr>
    <tr>
      <td>
        <div class="popUpClass" rel="popover" data-content="" data-reason="returnded reason is size mis match">
          <span style="margin-right:5px">shoes</span>
          <i class="glyphicon glyphicon-exclamation-sign" style="font-size:12px; color:red"></i>
        </div>
      </td>
      <td>15</td>
    </tr>
  </table>
</div>

$('#myTableDiv').on('click', '.popUpClass', function(e) {
  $(this).popover({
    content: $(this).data('reason'),
    container: 'body'
  })
})

1 个答案:

答案 0 :(得分:2)

您好,正如文档记录所说的here,您应该添加一个tabindex属性,以便您的<div>为:

<div tabindex="0" class="popUpClass" rel="popover" data-content="" data-reason="returnded reason is factory damage">
      <span style="margin-right:5px">shirt</span>
      <i class="glyphicon glyphicon-exclamation-sign" style="font-size:12px; color:red"></i>
</div>

在弹出窗口的配置中,您必须添加触发器:

 trigger: 'focus'

我隐藏所有弹出窗口,然后仅显示被单击的元素

最后,您的代码可能是:

$('#myTableDiv').on('click', '.popUpClass', function(e) {
  $(this).popover({
    trigger: 'focus',
    content: $(this).data('reason'),
    container: 'body'
  })
$('.popUpClass').popover('hide');
$(this).popover('toggle');
})

Here,您可以找到完整的示例