我只是在深入研究JavaScript的世界,并且对我目前正在遇到的难题有一个查询....
我有一个菜单按钮,该按钮揭示并隐藏了我正在工作的网站上的导航菜单。在此菜单按钮上,我附上了一些JavaScript,以"隐藏"当显示NAV栏并显示" Show"时"隐藏"主站点内容'随后再次关闭导航栏时的主要内容。
我编码的JavaScript完成了这项工作,但是我知道这是不对的,我以某种方式使它流传了!我之所以知道这一点,是因为"揭示"one_answers"隐藏"元素相互交互的脚本的时序值相互交互...使设置动画的时机无法准确设置。
显示和隐藏导航菜单的菜单按钮附有以下类:
.menu-toggle
单击以显示导航栏时,添加了其他类,这是:
.toggled-on
因此,在单击状态中,类是:
'.menu-toggle toggled-on'
这是控制网站内容的隐藏和揭示的JS:
$(document).on('click', '#menu-toggle', function() {
$('.site-content').animate({opacity:1, visibility:'visible'}, 100);
});
$(document).on('click', '.toggled-on', function() {
$('.site-content').animate({opacity:0, visibility:'visible'}, 300);
});
我相信,由于类的分配仍处于菜单按钮的"正常"one_answers"单击"状态。
我认为我需要这样做:
$(document).ready(function(){
if ( $('#menu-toggle').hasClass('toggled-on') ) {
$('#menu-toggle').addClass('nav-on');
} else {
$('#menu-toggle').addClass('nav-off');
}
});
但是这不起作用。
如果在任何人都可以指向如何更好地编码的方向上,那将不胜感激。
如果我正确理解,您想切换类。
您可以尝试http://api.jquery.com/toggleclass/。
让我知道它是否适合您!
谢谢
kamal
$(function () {
$('body').on('click', '#menu-toggle', function () {
$('.site-content').toggle(300)
})
})
上面的代码将导致.site-content
DIV在单击#menu-toggle
时淡出并淡出。
将函数包装在jQuery函数$()
内部的字面形式只是$(document).ready()
的速记。您可以以任何方式编写它,并且可以使用相同的工作。我喜欢更简短的语法。
jQuery中的.toggle()
方法只需切换元素的可见性即可。您无需更改课程或直接操纵不透明度或可见性就可以做到这一点。jQuery检测到它是否可见并照顾其余的。您可以添加持续时间以获得淡出效果。
我不知道您的HTML的结构,将绑定到身体标签。如果.site-content
有包装师,则可以委派。(这个想法是,更贴近事件目标,而不是使事件泡沫一直升至文档)。
享受!
从OP:
更新感谢您的答复。这确实确实切换了内容,但是我是 使用可见性和不透明度属性,因为我不想要 当隐藏了.Lote-content时,要更改的布局。可见性是 切换内容显然完全消失
新解决方案:
我不知道您的布局/CSS是什么样的,但我认为这是您想要的...
将以下内容添加到.site-content
的CSS样式中:
visibility: visible;
现在添加以下CSS规则:
.site-content.hidden {
visibility: hidden;
}
现在将JS代码更改为以下内容:
$(function () {
$('body').on('click', '#menu-toggle', function () {
$('.site-content').toggleClass('hidden')
})
})
样式visibility: hidden
表示您将不再看到该元素,但它仍然是文档流的一部分。换句话说,它仍然会占据您的布局中的空间。此更改不会影响其余布局。
现在,当您单击#menu-toggle
时,它将添加或删除隐藏的类。