如果在包含弹出框的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'
})
})
答案 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,您可以找到完整的示例