jQuery 切换不保持打开状态
jQuery toggle not staying open
试图切换div进行扩展和收缩,它基本上是一个菜单,带有子导航。 所以我最初将高度设置为 48px 以隐藏子导航,如果没有 JS,它仍然看起来不错,然后我分配了一个切换开关来打开和关闭div(在这种情况下设置高度)
它不断刷新并自动打开div。 不想保持打开状态,只是展开,发出警报,然后再次关闭。
jQuery(document).ready(function($) {
$('#nav-wrapper').css('height','48px');
$('#menu-item-18').click(function() {
var open = false;
if(isOpen) {
$('#nav-wrapper').animate({ height: '-=44' }, 0, function() {});
var isOpen = false;
alert ('not open')
} else {
$('#nav-wrapper').animate({ height: '+=44' }, 0, function() {});
isOpen = !isOpen;
alert ('open')
};
});
});
可能过于复杂了。我相信还有一个更简单的解决方案。
isOpen
在本地范围内定义,因此该值将始终为false。您需要将其移动到单击处理程序之外,然后只需要isOpen = !isOpen;
即可切换值。见下文,
$('#nav-wrapper').css('height','48px');
var isOpen = false;
$('#menu-item-18').click(function() {
isOpen = !isOpen;
if(isOpen) {
$('#nav-wrapper').animate({ height: '-=44' }, 0, function() {});
alert ('not open')
} else {
$('#nav-wrapper').animate({ height: '+=44' }, 0, function() {});
alert ('open')
};
});
这应该有效(并且也可以处理多个元素)
$('#menu-item-18').click(function() {
var isOpen = $(this).is('.open');
if(isOpen) {
$('#nav-wrapper').animate({ height: '-=44' }, 0);
$(this).removeClass('open');
alert ('not open');
} else {
$('#nav-wrapper').animate({ height: '+=44' }, 0);
$(this).addClass('open');
alert ('open') ;
};
});
很好,很容易
$('#menu-item-18').click(function() {
$('#nav-wrapper').slideToggle(200, //speed in ms
function() {
//callback (runs after shown or hidden)
$(this).is(':visible'); //Returns true if not hidden false if hidden
}
);
});
相关文章:
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- jQuery中的状态管理是什么
- MVC和JQuery Mobile:单选按钮在发布时释放状态
- jQuery复选框被锁定为选中状态
- JQUERY-在没有悬停后将SRC更改回原来的状态
- 来自应用程序状态的Jquery数据表源
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- jQuery美国地图插件-为每个点击状态添加unique.html
- 在单击按钮时激活按钮的悬停状态,直到单击另一个按钮(Javascript/JQuery)
- 重置按钮在 jQuery 中的单击状态
- JQuery UI 1.11 将选项卡设置为活动状态
- 我将如何在jQuery中切换setInterval函数的状态
- 如何在 jquery 中的速率按钮下方显示消息状态
- 带有jquery.min.map的Ruby on Rails:未能加载资源状态406
- 设置jquery按钮,而不是php错误和成功状态
- jQuery成功,访问HTTP状态文本
- jQuery识别页面加载上的单选按钮的不正确状态,当单选值=“0”时;否”;并且两个无线电都没有被选择
- 识别“Aria-Selected"状态- Jquery
- 删除后导航栏单击持续的活动状态 JQuery Mobile