Jquery Bootstrap在单击时显示和隐藏跨度
Jquery Bootstrap show and hide span on click
这是我在HTML中的下拉菜单
<li class="dropdown profile-dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="hidden-xs">Login</span> <b class="caret"></b>
</a>
<span class="dropdown-menu dropdown-menu-right" id='topArea'>
<span id='LoginArea'>Login</span>
<span id='RegisterArea'>Register</span>
<br>
<span id='login'>This is Login Area</span>
<span id='register' style='display:none'>This is Register Area</span>
</span>
</li>
这是我的Jquery,用于显示和隐藏登录和注册区域
$("#showLoginArea").click(function(){
console.log('login');
$("#login").show();
$("#register").hide();
});
$("#showRegisterArea").click(function(){
console.log('register');
$("#login").hide();
$("#register").show();
});
但是单击"showRegisterArea
"跨越整个菜单"会被隐藏,因为我使用了data-toggle="dropdown"
。
我如何修复这个
注:
当我点击寄存器时,寄存器区域显示,但弹出窗口隐藏,当再次点击弹出窗口时,寄存器区显示。
如何避免或覆盖它。
这是一个经过修订、简化的小提琴:https://jsfiddle.net/cu3gdgb3/1/
HTML:
<li class="dropdown profile-dropdown">
<span class="dropdown-menu dropdown-menu-right" id='topArea'>
<span id='showLoginArea'>Login</span>
<span id='showRegisterArea'>Register</span>
<br>
<span id='loginArea'>This is Login Area</span>
<span id='registerArea'>This is Register Area</span>
</span>
</li>
jQuery:
$("#loginArea").hide();
$("#registerArea").hide();
$("#showLoginArea").click(function(){
console.log('login');
$("#loginArea").toggle();
$("#registerArea").hide();
});
$("#showRegisterArea").click(function(){
console.log('register');
$("#loginArea").hide();
$("#registerArea").toggle();
});
您错误地引用了要切换的<div>
。
编辑-除了OP请求在点击页面的任何其他区域时隐藏登录/注册区域外,请参阅更新的fiddle:https://jsfiddle.net/cu3gdgb3/2/
jQuery:
$(document).on('click', function (e) {
if ($(e.target).closest("#topArea").length === 0) {
$("#loginArea").hide();
$("#registerArea").hide();
}
});
正如@Antonio的评论所提到的,这里没有loginArea
区域修复此问题。
$("#showLoginArea").click(function(){
console.log('login');
$("#loginArea").show();
$("#registerArea").hide();
});
$("#showRegisterArea").click(function(){
console.log('register');
$("#loginArea").hide();
$("#registerArea").show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="dropdown profile-dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="hidden-xs">Login</span> <b class="caret"></b>
</a>
<span class="dropdown-menu dropdown-menu-right" id='topArea'>
<span id='showLoginArea'>Login</span>
<span id='showRegisterArea'>Register</span>
<br>
<span id='loginArea'>This is Login Area</span>
<span id='registerArea' style='display:none'>This is Register Area</span>
</span>
</li>
您需要将事件传递给函数,并停止点击事件的传播或冒泡,这样登录对话框就不会关闭。此外,需要更改登录区域的名称。
<script>
$("#showLoginArea").click(function(event){
event.stopPropagation();
$("#loginArea").show();
$("#registerArea").hide();
});
$("#showRegisterArea").click(function(event){
event.stopPropagation();
$("#loginArea").hide();
$("#registerArea").show();
});</script>
<li class="dropdown profile-dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="hidden-xs">Login</span> <b class="caret"></b>
</a>
<span class="dropdown-menu dropdown-menu-right" id='topArea'>
<span id='showLoginArea'>Login</span>
<span id='showRegisterArea'>Register</span>
<br>
<span id='loginArea'>This is Login Area</span>
<span id='registerArea' style='display:none'>This is Register Area</span>
</span>
</li>
您的第二个loginrea被错误地命名为
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- 数据表-隐藏/显示列
- $scope变量,ng隐藏/显示
- 隐藏/显示包含单词的ul li项目.但只能入住李的子女
- JQuery隐藏/显示无法正常工作
- 隐藏/显示下面的分区根据是否选择某个选项进行选择
- 使用类而不是id在JavaScript中隐藏显示
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 隐藏/显示图像
- Javascript 中的表 - 隐藏/显示列
- 仅使用Javascript隐藏/显示元素,而不会弄乱DOM
- 隐藏/显示 js 代码不会在 IE8 或更低版本上运行
- Magento:根据所选国家/地区隐藏/显示输入字段
- 货到付款选择隐藏/显示付款方式
- "隐藏/显示”;元素和更改按钮背景图像
- Bootstrap Collapse.js切换菜单的隐藏/显示
- 如何隐藏/显示<面板>使用jquery
- 在php中隐藏/显示切换回声结果
- 如何使用jquery使2个按钮切换css,而只使用1个按钮.不显示隐藏/显示
- JQuery隐藏/显示不起作用