扫码关注官方订阅号
jq2 里没有toggle方法了,有什么好的替代吗,还有事件解绑用哪个
学习是最好的投资!
用hasClass/addClass/removeClass或attr标记状态实现toggle切换
<button id="animate" status="0">animate</button> <p id="block">Hello World</p> $("#animate").click(function(){ if(!$(this).hasClass("clicked")) { $(this).addClass("clicked"); $("#block").animate({"font-size": "10em"}, 1000, "linear", function(){console.log("complete");}); } else { $(this).removeClass("clicked"); $("#block").animate({"font-size": "1em"}, 1000, "linear", function(){console.log("complete");}); } }); $("#animate").click(function(){ if($(this).attr("status") == 0) { $(this).attr("status", 1); $("#block").animate({"font-size": "10em"}, 1000, "linear", function(){console.log("complete");}); } else { $(this).attr("status", 0); $("#block").animate({"font-size": "1em"}, 1000, "linear", function(){console.log("complete");}); } });
官方没有说去掉 toggle() 和 toggleClass() 啊,只说了在 3.0 中不再使用 .toggleClass( [state ] ) 这个签名(仅这个签名) 的函数。
toggle()
toggleClass()
.toggleClass( [state ] )
就 toggle() 来说,主要是用于显示或隐藏,可以自己判断,调用 show() 或者 hide() 的
show()
hide()
var $node = ...; if ($node.is(":hidden")) { $node.show(); } else { $node.hide(); }
那就直接使用hide和show这两个就行了或者你自己实现一个toggle(用hide和show)用JQ的extend,绑定在JQ上
官方要求用if。
题主说的应该是jq1.9里移除的这个toggle(fn1,fn2[,fn3,...]),我觉得可以借鉴上面答主的思路,设置个标志位,然后在click事件处理里用if...else判断下就可以了。
toggle(fn1,fn2[,fn3,...])
click
if...else
至于事件解绑,一种是用one()绑定,这样事件触发一次之后可以自动解绑;还有一种是绑定时为事件加上命名空间,比如
one()
$('#btn').on('click.test',function(){ //todo... });
这样就可以直接用
$('#btn').off('.test');
来解绑了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
用hasClass/addClass/removeClass或attr标记状态实现toggle切换
官方没有说去掉
toggle()和toggleClass()啊,只说了在 3.0 中不再使用.toggleClass( [state ] )这个签名(仅这个签名) 的函数。就
toggle()来说,主要是用于显示或隐藏,可以自己判断,调用show()或者hide()的那就直接使用hide和show这两个就行了或者你自己实现一个toggle(用hide和show)用JQ的extend,绑定在JQ上
官方要求用if。
题主说的应该是jq1.9里移除的这个
toggle(fn1,fn2[,fn3,...]),我觉得可以借鉴上面答主的思路,设置个标志位,然后在click事件处理里用if...else判断下就可以了。至于事件解绑,一种是用
one()绑定,这样事件触发一次之后可以自动解绑;还有一种是绑定时为事件加上命名空间,比如这样就可以直接用
来解绑了。