Javascript jQuery中的类切换
我不能让我的代码工作Javascript jQuery中的类切换,javascript,jquery,Javascript,Jquery,我不能让我的代码工作 $(document).ready(function() { $('.openMenu').click(function() { $('#menu').animate({ left: '0%' },500); $(this).removeClass('openMenu').addClass('closeMenu'); }); $('.closeMenu').click(function() { $('#menu').animate(
$(document).ready(function() {
$('.openMenu').click(function() {
$('#menu').animate({
left: '0%'
},500);
$(this).removeClass('openMenu').addClass('closeMenu');
});
$('.closeMenu').click(function() {
$('#menu').animate({
left: '-100%'
},500);
$(this).removeClass('closeMenu').addClass('openMenu');
});
});
这段代码应该使一个菜单在类为“openMenu”的div被单击时出现,并使其成为一个“隐藏”按钮,以便再次单击时,菜单消失。等等
它只工作一次:菜单出现,div的类从openMenu更改为closeMenu,但不会使菜单隐藏
非常感谢您的帮助$('.closeMenu')
在代码运行时不存在
您可以轻松地将这两个处理程序组合成一个,或者使用事件委派
将它们结合起来看起来像:
$('.openMenu').click(function() {
var leftAmt = $(this).is('.closeMenu') ? '-100%' : '0%';
$('#menu').animate({
left: leftAmt
},500);
$(this).toggleClass('openMenu closeMenu');
});
我可能会将此设置向后,并且页面加载中不存在$('.openMenu')
(取决于初始元素的状态),如果在代码运行时不存在$('.closeMenu')
,请更改开始选择器
您可以轻松地将这两个处理程序组合成一个,或者使用事件委派
将它们结合起来看起来像:
$('.openMenu').click(function() {
var leftAmt = $(this).is('.closeMenu') ? '-100%' : '0%';
$('#menu').animate({
left: leftAmt
},500);
$(this).toggleClass('openMenu closeMenu');
});
我可能会将此设置向后,并且页面加载中不存在$('.openMenu')
(取决于初始元素的状态),如果在代码运行时不存在$('.closeMenu')
,请更改开始选择器
您可以轻松地将这两个处理程序组合成一个,或者使用事件委派
将它们结合起来看起来像:
$('.openMenu').click(function() {
var leftAmt = $(this).is('.closeMenu') ? '-100%' : '0%';
$('#menu').animate({
left: leftAmt
},500);
$(this).toggleClass('openMenu closeMenu');
});
我可能会将此设置向后,并且页面加载中不存在$('.openMenu')
(取决于初始元素的状态),如果在代码运行时不存在$('.closeMenu')
,请更改开始选择器
您可以轻松地将这两个处理程序组合成一个,或者使用事件委派
将它们结合起来看起来像:
$('.openMenu').click(function() {
var leftAmt = $(this).is('.closeMenu') ? '-100%' : '0%';
$('#menu').animate({
left: leftAmt
},500);
$(this).toggleClass('openMenu closeMenu');
});
我可能会将其向后设置,并且页面加载中不存在
$('.openMenu')
(取决于初始元素的状态),如果是这种情况,只需更改开始选择器即可我怀疑事件委派就是您要找的。不要使用jQuery的.CHILL方法,考虑使用.on方法,并在其中提供选择器。
$(文档).ready(函数(){
$(文档)。在(“单击“,”.openMenu“,函数()上){
// ...
});
$(文档)。在(“单击”、“.closeMenu”上,函数(){
// ...
});
});
我怀疑事件授权是您在这里追求的目标。不要使用jQuery的.CHILL方法,考虑使用.on方法,并在其中提供选择器。
$(文档).ready(函数(){
$(文档)。在(“单击“,”.openMenu“,函数()上){
// ...
});
$(文档)。在(“单击”、“.closeMenu”上,函数(){
// ...
});
});
我怀疑事件授权是您在这里追求的目标。不要使用jQuery的.CHILL方法,考虑使用.on方法,并在其中提供选择器。
$(文档).ready(函数(){
$(文档)。在(“单击“,”.openMenu“,函数()上){
// ...
});
$(文档)。在(“单击”、“.closeMenu”上,函数(){
// ...
});
});
我怀疑事件授权是您在这里追求的目标。不要使用jQuery的.CHILL方法,考虑使用.on方法,并在其中提供选择器。
$(文档).ready(函数(){
$(文档)。在(“单击“,”.openMenu“,函数()上){
// ...
});
$(文档)。在(“单击”、“.closeMenu”上,函数(){
// ...
});
});
您的代码未优化。无论如何,它不会工作,因为您正在将事件附加到不存在的元素.closeMenu
要将事件附加到在任何时候(也在加载页面之后)创建的元素,应使用事件委派。在jQuery中,事件委派可以通过on()
和off()
方法进行。
见:
以下是解决方案(未经测试):
此解决方案之所以有效,是因为您将事件附加到目标的现有父级
(我重复:这段代码没有优化,菜单可以用更好的方式完成,但事件委派解决了这个典型的事件问题)
有关活动委派的更多信息,请参阅或谷歌…您的代码未优化。无论如何,它不会工作,因为您正在将事件附加到不存在的元素
.closeMenu
要将事件附加到在任何时候(也在加载页面之后)创建的元素,应使用事件委派。在jQuery中,事件委派可以通过on()
和off()
方法进行。
见:
以下是解决方案(未经测试):
此解决方案之所以有效,是因为您将事件附加到目标的现有父级
(我重复:这段代码没有优化,菜单可以用更好的方式完成,但事件委派解决了这个典型的事件问题)
有关活动委派的更多信息,请参阅或谷歌…您的代码未优化。无论如何,它不会工作,因为您正在将事件附加到不存在的元素
.closeMenu
要将事件附加到在任何时候(也在加载页面之后)创建的元素,应使用事件委派。在jQuery中,事件委派可以通过on()
和off()
方法进行。
见:
以下是解决方案(未经测试):
此解决方案之所以有效,是因为您将事件附加到目标的现有父级
(我重复:这段代码没有优化,菜单可以用更好的方式完成,但事件委派解决了这个典型的事件问题)
有关活动委派的更多信息,请参阅或谷歌…您的代码未优化。无论如何,它不会工作,因为您正在将事件附加到不存在的元素
.closeMenu
要将事件附加到在任何时候(也在加载页面之后)创建的元素,应使用事件委派。在jQuery中,事件委派可以通过on()
和off进行(