在页面加载时打开一个弹出窗口并在其他任何地方单击时隐藏 + 在调整大小时动态跟随它的父级 window
Open one popover on page load and hide when clicked anywhere else + dynamically follow it's parent when resizing window
所以我一直在玩弄来自 bootstrap 的内置弹出窗口。我是 JS 的新手,所以请多关照!
我已经设法让多个弹出框以我喜欢的方式显示和隐藏,但我非常希望它们在调整 window 大小时跟随触发弹出框的元素,对于第一个用户加载页面时加载的弹出框。
我在这里搜索并找到了第一个在加载时显示的内容,但在单击其他内容时它不会隐藏。
正在使用
$(function () {
$("#popbadge1").popover('show');
});
我的js
$(document).ready(function () {
$("#popbadge1").popover({
html : true,
content: function() {
return $('#hiddenpopbadge1').html();
},
});
$("#popbadge2").popover({
html : true,
content: function() {
return $('#hiddenpopbadge2').html();
},
});
$("#popbadge3").popover({
html : true,
content: function() {
return $('#hiddenpopbadge3').html();
},
});
});
我的标记
<ul>
<li><a class="badge1" id="popbadge1" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">1</a></li>
<!-- Popover 1 hidden content -->
<div id="hiddenpopbadge1" style="display: none">
<h3>Content</h3>
</div>
<li><a class="badge2" id="popbadge2" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">2</a></li>
<!-- Popover 2 hidden content -->
<div id="hiddenpopbadge2" style="display: none">
<h3>Content 2</h3>
</div>
<li><a class="badge3" id="popbadge3" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">3</a></li>
<!-- Popover 3 hidden content -->
<div id="hiddenpopbadge3" style="display: none">
<h3>Content 3</h3>
</div>
</ul>
理想情况下,当 window 调整大小时,我希望弹出窗口也跟随触发它的按钮。
有人能帮忙吗?
对我来说,我不清楚你的意思...
"I would very much like them to follow the element that fires the popover when resizing the window..."
但是,让弹出窗口在页面加载时显示只是将您的第一个代码片段放入 (document).ready().
点击页面上的任何其他内容时隐藏弹出窗口类似于 this question,它适用于如下内容:
$(function () {
// When anything is clicked...
$('*').click(function (e) {
// Except popbadge1
if (e.target.attr != 'popbadge1') {
// Hide the popover
$("#popbadge1").popover('hide');
}
});
});
但是当您尝试返回第一个 link 时出现问题,它不会打开弹出窗口。可能与 Bootstrap 冲突,或者我错过了什么?无论如何,一个简单的检查,看看弹出窗口是否在解决之前被隐藏过一次。
感谢 grayspace 让 popover 在加载时显示一个,除了他的回答之外,我还设置了第一个 popover 为焦点,它似乎已经解决了轻微的故障。
$(function() {
$("#popbadge1").focus();
});
https://jsfiddle.net/j4dut2ux/
您还将在 fiddle 中看到,通过显示为内联框并在 .a 周围添加一个 div 并相应地使用相对和绝对定位,弹出框现在跟随其父项。
所以我一直在玩弄来自 bootstrap 的内置弹出窗口。我是 JS 的新手,所以请多关照!
我已经设法让多个弹出框以我喜欢的方式显示和隐藏,但我非常希望它们在调整 window 大小时跟随触发弹出框的元素,对于第一个用户加载页面时加载的弹出框。
我在这里搜索并找到了第一个在加载时显示的内容,但在单击其他内容时它不会隐藏。
正在使用
$(function () {
$("#popbadge1").popover('show');
});
我的js
$(document).ready(function () {
$("#popbadge1").popover({
html : true,
content: function() {
return $('#hiddenpopbadge1').html();
},
});
$("#popbadge2").popover({
html : true,
content: function() {
return $('#hiddenpopbadge2').html();
},
});
$("#popbadge3").popover({
html : true,
content: function() {
return $('#hiddenpopbadge3').html();
},
});
});
我的标记
<ul>
<li><a class="badge1" id="popbadge1" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">1</a></li>
<!-- Popover 1 hidden content -->
<div id="hiddenpopbadge1" style="display: none">
<h3>Content</h3>
</div>
<li><a class="badge2" id="popbadge2" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">2</a></li>
<!-- Popover 2 hidden content -->
<div id="hiddenpopbadge2" style="display: none">
<h3>Content 2</h3>
</div>
<li><a class="badge3" id="popbadge3" href="#" role="button" data-trigger="focus" tabindex="0" data-placement="bottom">3</a></li>
<!-- Popover 3 hidden content -->
<div id="hiddenpopbadge3" style="display: none">
<h3>Content 3</h3>
</div>
</ul>
理想情况下,当 window 调整大小时,我希望弹出窗口也跟随触发它的按钮。
有人能帮忙吗?
对我来说,我不清楚你的意思...
"I would very much like them to follow the element that fires the popover when resizing the window..."
但是,让弹出窗口在页面加载时显示只是将您的第一个代码片段放入 (document).ready().
点击页面上的任何其他内容时隐藏弹出窗口类似于 this question,它适用于如下内容:
$(function () {
// When anything is clicked...
$('*').click(function (e) {
// Except popbadge1
if (e.target.attr != 'popbadge1') {
// Hide the popover
$("#popbadge1").popover('hide');
}
});
});
但是当您尝试返回第一个 link 时出现问题,它不会打开弹出窗口。可能与 Bootstrap 冲突,或者我错过了什么?无论如何,一个简单的检查,看看弹出窗口是否在解决之前被隐藏过一次。
感谢 grayspace 让 popover 在加载时显示一个,除了他的回答之外,我还设置了第一个 popover 为焦点,它似乎已经解决了轻微的故障。
$(function() {
$("#popbadge1").focus();
});
https://jsfiddle.net/j4dut2ux/
您还将在 fiddle 中看到,通过显示为内联框并在 .a 周围添加一个 div 并相应地使用相对和绝对定位,弹出框现在跟随其父项。