将 .toggle() 添加到 jQuery
Adding .toggle() to a jQuery
我首先尝试向此代码添加.toggle()
,以便菜单在单击时动画化,但在单击时也会关闭,然后意识到我不能很好地使用.toggle()
中的.animate
,所以我正在尝试.click()
如果有办法用单击替换我的mouseenter
和mouseleave
功能,那就是我正在寻找的。
我已经搜索过,但我找不到任何使用动画菜单完成此操作的地方,因此,这是该函数的 javascript:
$('#sdt_menu > li').bind('mouseenter',function(){
var $elem = $(this);
$elem.find('img')
.stop(true)
.animate({
border: '5px solid #000',
'width':'150px',
'height':'170px',
'left':'0px'
},400,'easeOutBack')
.andSelf()
.find('.sdt_wrap')
.stop(true)
.animate({'top':'140px'},500,'easeOutBack')
.andSelf()
.find('.sdt_active')
.stop(true)
.animate({'height':'170px'},300,function(){
var $sub_menu = $elem.find('.sdt_box');
if($sub_menu.length){
var left = '170px';
if($elem.parent().children().length == $elem.index()+1)
left = '-170px';
$sub_menu.show().animate({'left':left},200);
}
});
}).bind('mouseleave',function(){
var $elem = $(this);
var $sub_menu = $elem.find('.sdt_box');
if($sub_menu.length)
$sub_menu.hide().css('left','0px');
$elem.find('.sdt_active')
.stop(true)
.animate({'height':'0px'},300)
.andSelf().find('img')
.stop(true)
.animate({
border: "2px solid #FFFFFF",
'width':'150px',
'height':'150px',
'left':'0px'},400)
.andSelf()
.find('.sdt_wrap')
.stop(true)
.animate({'top':'25px'},500);
});
下面,如果它打开,我添加一个类,如果它关闭,则删除一个类,告诉onclick事件该怎么做。
查看 http://api.jquery.com/toggle-event/。足够简单。
归功于附庸者。
$('#sdt_menu > li').toggle(function(){
var $elem = $(this);
var $sub_menu = $elem.find('.sdt_box');
$elem.find('img')
.stop(true)
.animate({
border: '5px solid #000',
'width':'150px',
'height':'170px',
'left':'0px'
},400,'easeOutBack')
.andSelf()
.find('.sdt_wrap')
.stop(true)
.animate({'top':'140px'},500,'easeOutBack')
.andSelf()
.find('.sdt_active')
.stop(true)
.animate({'height':'170px'},300,function(){
if($sub_menu.length){
var left = '170px';
if($elem.parent().children().length == $elem.index()+1)
left = '-170px';
$sub_menu.show().animate({'left':left},200);
}
});
}, function(){
var $elem = $(this);
var $sub_menu = $elem.find('.sdt_box');
if($sub_menu.length)
$sub_menu.hide().css('left','0px');
$elem.find('.sdt_active')
.stop(true)
.animate({'height':'0px'},300)
.andSelf().find('img')
.stop(true)
.animate({
border: "2px solid #FFFFFF",
'width':'150px',
'height':'150px',
'left':'0px'},400)
.andSelf()
.find('.sdt_wrap')
.stop(true)
.animate({'top':'25px'},500);
});
var isOpen = true;
$('#sdt_menu > li').click(function(){
if(isOpen == true){
$(this).hide();
isOpen = false;
}else{
$(this).show();
isOpen = true;
}
}
您可以根据需要设置 isOpen 变量的默认值。
.show() 和 .hide 是切换函数的扩展功能。
您可以定义一个全局变量,例如var isOpen = true;
然后更改代码以单击
$('#sdt_menu > li').on('click', isOpen, function() {
if (isOpen) {
// Close
} else {
// Open
}
isOpen = !isOpen;
});
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 通过jQuery添加ng样式属性,angular不更新
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- jQuery添加的文本不显示
- 使用Jquery添加内容
- 如何使用jQuery添加另一个对象的高度作为边距
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- 对于每个json结果,使用类jquery添加css
- Jquery添加一个类之后,如何应用css
- 使用jQuery添加和删除属性
- Jquery添加输入字段和日期选择器
- jQuery - 添加删除类 - 设置输入值
- 为什么在这种情况下要向JQuery添加两个链接
- 为图像滑块jquery添加项目符号功能
- 使用jquery添加到表单内部表中的元素不会过帐
- 如何使用jquery添加元素
- 使用Jquery添加XML元素
- 当使用javascript/jquery添加值时,html文本输入表显示不正确
- 将jquery添加到firefox扩展中
- 运行 AJAX 需要什么 - 将 jQuery 添加到页面处理 AJAX 调用