• 非常适合新手的jq/zepto源码分析04


      $.extend = function(target){
                var deep, args = slice.call(arguments, 1)
                if (typeof target == 'boolean') {
                    deep = target
                    target = args.shift()
                }
                args.forEach(function(arg){ extend(target, arg, deep) })
                return target
       }
    

      

    扩展函数 第一个参数为boolean true 则深扩展,

            zepto.qsa = function(element, selector){
                var found,
                    maybeID = selector[0] == '#',
                    maybeClass = !maybeID && selector[0] == '.',
                    nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked
                    isSimple = simpleSelectorRE.test(nameOnly)
                return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById
                    ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :
                    (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :
                        slice.call(
                            isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName
                                maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class
                                    element.getElementsByTagName(selector) : // Or a tag
                                element.querySelectorAll(selector) // Or it's not simple, and we need to query all
                        )
            }
    

      

    getElementByClassName     通过class获取节点

    getElementByTagName    通过标签回去

    获取单个选择器

       $.contains = document.documentElement.contains ?
                function(parent, node) {
                    return parent !== node && parent.contains(node)
                } :
                function(parent, node) {
                    while (node && (node = node.parentNode))
                        if (node === parent) return true
                    return false
                }
    

      

    document.documentElement.contains    检测某个节点下是否包含传入的子节点

      
    $.type = type      //检测对象类型
    $.isFunction = isFunction      //是否为函数
    $.isWindow = isWindow      //是否为window对象
    $.isArray = isArray      //是否为数组
    $.isEmptyObject      //是否为空对象
    $.isNumeric        //是否为有效数字
    $.inArray         //array的indexof
    $.camelCase        //驼峰命名
    $.trim           //去空
    $.map           //遍历函数,返回一个返回值的集合数组
    $.each           //遍历元素执行函数
    $.grep           //array的filter函数



    代码仅供参考,具体功能可以自己扩展。

    http://www.cnblogs.com/jiebba/p/6529854.html 

    http://www.cnblogs.com/jiebba    我的博客,来看吧!

    如果有错误,请留言修改下 哦!

  • 相关阅读:
    P3396 哈希冲突 TJ
    U135884 膜法问题 TJ
    U135075 简单数列 TJ
    U135649 皇室战争 TJ
    SF&SJJG-ST表
    牛客NOIP集训三S 牛半仙的妹子数 TJ
    UVA297 四分树 Quadtrees TJ
    UVA679 小球下落 Dropping Balls TJ
    [ACM] CF水题记
    Hoppz的收藏夹
  • 原文地址:https://www.cnblogs.com/jiebba/p/6530806.html
Copyright © 2020-2023  润新知