防止单击时打开多个弹出窗口
Prevent multiple popups opening on click
我创建了一个网站,它使用许多弹出窗口来显示信息。然而,当点击任何按钮时,所有弹出窗口都会同时打开,并会掩盖我想要显示的信息。
以下是我迄今为止的代码:
Javascript:
(我相信这可能是我犯错误的地方,因为当点击一个按钮时,点击另一个按钮只会关闭弹出窗口,不会像我想要的那样打开新的。)
function deselect(e) {
$('.pop').slideToggle('normal', function() {
e.removeClass('selected');
});
}
$(function() {
$('#youtube, #youtube-popup').on('click', function() {
if ($(this).hasClass('selected')) {
deselect($(this));
} else {
$(this).addClass('#youtube');
// $(this).removeClass('#twitch');
$('.pop').slideToggle();
}
return false;
});
$('.close').on('click', function() {
deselect($(this).closest('#youtube, #youtube-popup'));
return false;
});
});
CSS:
.messagepop {
background-color: #ffffff;
opacity: 1;
color: #000000;
display: none;
bottom: 0px;
position: absolute;
text-align: center;
width: 100%;
height: 20%;
z-index: 50;
padding: 25px 25px 20px;
text-align: center;
vertical-align: middle;
}
.messagepop p,
.messagepop.div {
padding-top: 200px;
}
HTML:
我可能把这个部分弄得过于复杂,这可能会导致更多的错误。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body bgcolor="grey">
<div class="container">
<div class="row">
<br>
<ul class="list-inline">
<div class="hover">
<img href="" id="youtube" src="http://geniussys.com/img/placeholder/blogpost-avatar-50x50.png" padding="1px 1px 1px 1px"></div>
<div class="hover">
<img href="" id="twitter" src="http://geniussys.com/img/placeholder/blogpost-avatar-50x50.png" padding="1px 1px 1px 1px"></div>
<div class="hover">
<img href="" id="facebook" src="http://geniussys.com/img/placeholder/blogpost-avatar-50x50.png" padding="1px 1px 1px 1px"></div>
</ul>
</div>
</div>
<div class="messagepop pop">
<div id="youtube-popup">
<font size=5><b>Text 1</b>
<br><font size=2>
Text 1.
<br><font size=5><b>Text 2</b>
<br><font size=2>Text 2.
</font>
<div class="messagepop pop">
<div id="twitter-popup">
<font size=5><b>Text 3</b>
<br><font size=2>Text 3.
<br><font size=5><b>Text 4</b>
<br><font size=2>Text 4.
<br><font size=5><b>Text 5</b>
<br><font size=2>Text 5.
</font></div>
</div>
<div class="messagepop pop">
<div id="facebook-popup">
<font size=5><b>Text 6</b>
<br><font size=2>Text 6.
</font></div>
</div>
如果你需要更多信息,请告诉我。
感谢
如前所述,您的HTML格式根本不好([ul]标记必须有[li]子级,HTML5中不支持[font]),并且您的javascript…糟糕!
您可以通过单一功能实现所需的行为
$('img').on('click', function() {
$('.pop.active').each(function() { $(this).slideToggle(); $(this).removeClass('active'); $('#' + $(this).data('refli')).removeClass('selected'); });
var myId= $('#' + $(this).attr('id'));
var myPop= $('#' + $(this).attr('id') + '-popup');
myId.addClass('selected');
myPop.addClass('active');
myPop.slideToggle();
});
在这里您可以找到一个快速样本
使用<font>
标记时,也应该关闭它。当使用<ul>
标记时,在其内部必须有<li>
标记。抱歉,您的jquery代码一团糟。我写了一个更简单的例子来说明你可能在看什么。
检查小提琴:https://jsfiddle.net/xtmzq2pn/1/
$(".box").on("click",function(){
if($(this).is("#square1")){
$("#text1").slideToggle();
$("#text2").css("display","none");
$("#text3").css("display","none");
}else if($(this).is("#square2")){
$("#text2").slideToggle();
$("#text1").css("display","none");
$("#text3").css("display","none");
}else if($(this).is("#square3")){
$("#text3").slideToggle();
$("#text2").css("display","none");
$("#text1").css("display","none");
}})
相关文章:
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 单击时隐藏弹出窗口
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 试图修改此javascript代码以减小弹出窗口的大小,或者在用户单击框外时关闭
- 在外部(正文)单击时关闭弹出窗口
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 编辑弹出窗口的HTML的单击命令
- 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开
- 单击按钮时的窗口属性
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- 打开'选择文件'窗口单击锚链接(跳过单击'选择文件'按钮)
- 如何在显示多个标记时单击另一个标记时关闭信息窗口
- 即使我单击“确定”,模型弹出窗口扩展器仍保持打开状态
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 如何通过单击数据在新窗口上显示TableView数据
- 单击弹出窗口中的按钮后重定向到页面
- HTML 框架 - 防止引导弹出窗口在用户单击正文时消失
- 图像映射区域无法触发单击事件.afer最大化寡妇或恢复窗口单击事件触发
- 确认删除窗口-单击“删除”或“取消”时删除记录
- 需要关闭花哨框按钮上的当前窗口单击