为了账号安全,请及时绑定邮箱和手机立即绑定

急求!!!!JQuery toggle()方法替代问题大佬们有什么好的建议?

急求!!!!JQuery toggle()方法替代问题大佬们有什么好的建议?

白衣非少年 2019-06-10 09:30:15
锋利的JQuery一书中对toggle方法的讲解停留在1.9版本以前,现在这个方法已经删除了切换绑定事件的用途,于是我想尝试一下几种不同的替代方法:div:nth-of-type(1){width:200px;height:200px;background-color:aqua;float:left;display:block;}div:nth-of-type(2){width:200px;height:200px;background-color:tomato;margin-left:200px;}$(function(){$("#show-box").click(function(){if($("#show-box").css("display")=="block"){//is(":hidden")$(this).hide(300);}else{$(this).show(300);}});vari=0;$("#fade-box").click(function(){if(i==0){$(this).fadeOut(300);i=1;}elseif(i==1){$(this).fadeIn(300);i=0;}console.log(i);})})两种方法都无法工作:都是只能消失而不能再次出现,想请问一下各位大佬是哪里出了问题...已经查阅了一些博文,用的也多是这两种方法...
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

第一种方法里,.css()这个方法主要是针对行内样式的操作(执行存在不确定性),并且,display在非block值的情况下也可能是非隐藏的状态(另外多说一句,.show()和.hide()这对方法,会缓存display原来的值,所以就不会出现非block元素被block这样的事),所以不建议这样用
第二种方法思路可以,但DOM相关的变量(尤其是状态),建议你用data-xxxx这样的属性放在元素里,这样你事件回调里直接$(this).data('xxxx')就能取到属性,还可以避免变量冲突和作用域之类的问题。
data相关的API查文档吧,比如>这里<这个就挺方便。锋利那本书太老了,个人不太推荐。
                            
查看完整回答
反对 回复 2019-06-10
?
慕斯王

TA贡献1864条经验 获得超2个赞

你的理解有点问题,消失了的话就点不了了,自然不会触发else后面的动作了
切换1
切换2
                            
查看完整回答
反对 回复 2019-06-10
慕课专栏
更多

添加回答

了解更多

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信