通过可见性隐藏和显示元素:隐藏/可见
Hiding and showing an element via visibility:hidden/visible
我有 2 个div 框,单击其他 2 个div 框时应该显示/隐藏。我希望div保留他们的空间,这样它就不会破坏DOM,所以我想.toggle()
这是毫无疑问的。
我试过这个没有运气:
$('#red, #pink').click(function() {
// Based on the id property of the clicked element
// this selects #reddef or #pinkdef element
if($('#' + this.id + 'def').is(":visible")) {
$('#' + this.id + 'def').css('visibility','hidden');}
else if($('#' + this.id + 'def').is(":hidden")) {
$('#' + this.id + 'def').css('visibility','visible')}
});
因此,如果我单击#red
那么#reddef
在保留空间的同时消失。但是当我再次单击时,没有任何反应。我想我错过了自动取款机,但不知道是什么。
根据:hidden
选择器的文档:
可见性:隐藏或不透明度:0 的元素被视为可见,因为它们仍然占用布局中的空间。
我建议添加/删除一个类,因为这更容易测试,如下所示:
if($('#' + this.id + 'def').hasClass('visHidden')) {
$('#' + this.id + 'def').removeClass('visHidden')
}
else {
$('#' + this.id + 'def').addClass('visHidden');
}
您的 CSS 将在哪里:
.visHidden {
visibility:hidden;
}
工作小提琴:http://jsfiddle.net/rYYPb/
$('#red, #pink').on('click', function() {
var $def = $('#' + this.id + 'def');
if ($def.css('visibility') === 'hidden') {
$def.css('visibility', 'visible')
}
else {
$def.css('visibility', 'hidden');
}
});
就像winterblood说的那样,按照jQuery的标准,visibility: hidden
仍然是"可见的"。因此,您可以检查它是否真的具有hidden
样式。
相关文章:
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 检查元素是否将状态从隐藏更改为可见
- 有没有一种方法可以从隐藏的可见性(CSS,JS)中获得淡入效果
- 如何隐藏与要保持可见的表共享类元素的HTML表
- JavaScript可见性不起作用('隐藏'起作用,'可见'不起作用)
- 敲除:如何使用可见数据绑定可见来隐藏段落标记
- Javascript表单隐藏可见操作
- 隐藏可见性:隐藏的额外间距
- 在单击 D3 .js 时隐藏可见元素
- 按类名而不是 ById 显示/隐藏可见性
- 通过可见性隐藏和显示元素:隐藏/可见
- 隐藏可见性会隐藏图像,但仍会显示隐藏元素占用的空间
- 当日期选择器在x-editable中隐藏/可见时,显示/隐藏按钮
- JavaScript隐藏/可见脚本在第二次单击后不会隐藏
- jQuery如何不断检查元素是否隐藏/可见
- 在制作隐藏/可见错误信息时遇到困难
- Jquery悬停显示和隐藏可见性问题
- 如何添加淡入/淡出效果到我的函数,而不是仅仅设置可见性隐藏/可见
- 加载图像隐藏可见效果使用javascript和CSS
- jQuery显示隐藏的li元素,但随后隐藏可见的li元素