首页 > 代码库 > jquery的show/hide/toggle
jquery的show/hide/toggle
阅读源码我们发现show,hide,toggle调用了showHide和isHidden这2个方法,所以我们要搞明白原理必须先看一下这2个方法。
jQuery.fn.extend({ ................. show: function() { return showHide( this, true ); }, hide: function() { return showHide( this ); }, toggle: function( state, fn2 ) { var bool = typeof state === "boolean"; if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { return eventsToggle.apply( this, arguments ); } return this.each(function() { if ( bool ? state : isHidden( this ) ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } }); }});
isHidden比较简单,接受2个参数,调用了jq的工具方法css来判断当前的display是否为none,为none返回真,否则走后面的contains方法
contains用于判断元素是否包含在元素所在的文档中,elem.ownerDocument其实就是document, elem是元素
由此可以看出,如果元素不包含在当前的文档中,jq也认为这个元素是隐藏的,比如document.createElement创建出来的元素。
function isHidden( elem, el ) { elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );}
的郭德纲
jquery的show/hide/toggle
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。