首页 > Web开发 > 详细

jquery的show/hide/toggle

时间:2016-10-04 12:00:47      阅读:204      评论:0      收藏:0      [点我收藏+]

阅读源码我们发现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

原文:http://www.cnblogs.com/gongshunkai/p/5930198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!