锋利的JQuery一书中对toggle方法的讲解停留在1.9版本以前,现在这个方法已经删除了切换绑定事件的用途,于是我想尝试一下几种不同的替代方法:<style>
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;
} </style></head><body>
<div id="show-box"></div>
<div id="fade-box"></div>
<script>
$(function(){
$("#show-box").click(function(){ if($("#show-box").css("display")=="block"){//is(":hidden")
$(this).hide(300);
}else{
$(this).show(300);
}
}); var i = 0;
$("#fade-box").click(function(){ if(i == 0){
$(this).fadeOut(300);
i = 1;
}else if(i == 1){
$(this).fadeIn(300);
i = 0;
} console.log(i);
})
}) </script>两种方法都无法工作:都是只能消失而不能再次出现,想请问一下各位大佬是哪里出了问题...已经查阅了一些博文,用的也多是这两种方法...
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
第一种方法里,
.css()
这个方法主要是针对行内样式的操作(执行存在不确定性),并且,display
在非block
值的情况下也可能是非隐藏的状态(另外多说一句,.show()
和.hide()
这对方法,会缓存display
原来的值,所以就不会出现非block元素被block这样的事),所以不建议这样用第二种方法思路可以,但DOM相关的变量(尤其是状态),建议你用
data-xxxx
这样的属性放在元素里,这样你事件回调里直接$(this).data('xxxx')
就能取到属性,还可以避免变量冲突和作用域之类的问题。data相关的API查文档吧,比如>这里<这个就挺方便。锋利那本书太老了,个人不太推荐。
- 2 回答
- 0 关注
- 517 浏览
添加回答
举报
0/150
提交
取消