点击按钮button,让div显示,重复点击实现,显示与隐藏的切换。
js原生也可以实现,点击事件中添加判断div的状态,如果显示则隐藏,达到切换的效果。
其次想到的是jQuery中的toggle()事件。
语法如下:
<button id="btn">click me</button>
<div id="box" style="display:none;">
jq 1.9版本以下的toggle()
</div>
$("#btn").toggle(function(){
$("#box").show();
//$("#box").css("display", "block");
},
function(){
$("#box").hide();
//$("#box").css("display", "none");
});
这样就可以控制其显示与隐藏的切换了,但是今天在项目中写的toggle事件很奇怪,页面刷新后,添加toggle()的按钮都不见了,点击也没反应。
调试发现高版本的jquery中移除了toggle(),但是很奇怪的是进到这个页面的时候,那个button先闪了以下,然后就被隐藏掉了(display:none),自然就点击不到了。
如果还想使用1.9版本之前的toggle事件,怎么办?
在js中添加如下代码:
// 1.9以上高版本的jq不支持toggle,解决如下:
$.fn.toggle = function( fn, fn2 ) {
var args = arguments,guid = fn.guid || $.guid++,i=0,
toggle = function( event ) {
var lastToggle = ( $._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
$._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
event.preventDefault();
return args[ lastToggle ].apply( this, arguments ) || false;
};
toggle.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggle );
};
添加上之后,就可以接着使用toggle()了。
网友评论