jQuery 切换隐藏选择器
jQuery toggle hides selector
我想使用 jQuery toggle()
函数在元素 (#mobileMenu
) 被单击,然后当再次单击该元素时,div 再次滑出屏幕。我已经在点击时进行了滑动,但是触发元素随后被隐藏 - display: none
被注入到标签中 - 这使得无法再次点击将 div 滑出。这是相关代码:
$(document).ready(function(){
$('#mobileMenu').click(function() {
$("#mobileMenu").toggle(function() {
$('#mobileNav', this).animate({left: '0' });
}, function() {
$("#mobileNav", this).animate({left: '-380px'});
});
});
});
#mobileNav
初始设置为 left: -380px
.
<div class="mobile-menu-icon">
<p><a id="mobileMenu" href="#">☰</a></p>
</div>
答案可能使用范围界定,但我似乎无法理解它是如何工作的。
一如既往 - 感谢所有帮助 - 乔
问题是因为 toggle()
方法不再以您期望的方式工作。 'toggle between functions' 签名是 deprecated in 1.8 and removed in 1.9.
相反,您需要自己处理行为的变化。在这种情况下,通过检查元素的当前 left
位置:
$('#mobileMenu').click(function() {
$(this).toggle(function() {
var leftPos = parseInt($(this).css('left'), 10) == 0 ? '-380px' : 0;
$('#mobileNav').animate({ left: leftPos });
});
});
或者,最好是,您可以在 CSS 中执行动画,然后使用 toggleClass
触发它:
#mobileNav {
left: 0;
transition: left 0.5s;
}
#mobileNav.open {
left: -380px;
}
$('#mobileMenu').click(function() {
$('#mobileNav').toggleClass('open');
});
最后,请注意,您使用上下文 id
选择器 ($("#mobileNav", this)
) 是多余的,因为 id 属性在文档中应该是唯一的,因此上下文选择器没有实际意义。
我想使用 jQuery toggle()
函数在元素 (#mobileMenu
) 被单击,然后当再次单击该元素时,div 再次滑出屏幕。我已经在点击时进行了滑动,但是触发元素随后被隐藏 - display: none
被注入到标签中 - 这使得无法再次点击将 div 滑出。这是相关代码:
$(document).ready(function(){
$('#mobileMenu').click(function() {
$("#mobileMenu").toggle(function() {
$('#mobileNav', this).animate({left: '0' });
}, function() {
$("#mobileNav", this).animate({left: '-380px'});
});
});
});
#mobileNav
初始设置为 left: -380px
.
<div class="mobile-menu-icon">
<p><a id="mobileMenu" href="#">☰</a></p>
</div>
答案可能使用范围界定,但我似乎无法理解它是如何工作的。
一如既往 - 感谢所有帮助 - 乔
问题是因为 toggle()
方法不再以您期望的方式工作。 'toggle between functions' 签名是 deprecated in 1.8 and removed in 1.9.
相反,您需要自己处理行为的变化。在这种情况下,通过检查元素的当前 left
位置:
$('#mobileMenu').click(function() {
$(this).toggle(function() {
var leftPos = parseInt($(this).css('left'), 10) == 0 ? '-380px' : 0;
$('#mobileNav').animate({ left: leftPos });
});
});
或者,最好是,您可以在 CSS 中执行动画,然后使用 toggleClass
触发它:
#mobileNav {
left: 0;
transition: left 0.5s;
}
#mobileNav.open {
left: -380px;
}
$('#mobileMenu').click(function() {
$('#mobileNav').toggleClass('open');
});
最后,请注意,您使用上下文 id
选择器 ($("#mobileNav", this)
) 是多余的,因为 id 属性在文档中应该是唯一的,因此上下文选择器没有实际意义。