zoukankan      html  css  js  c++  java
  • 非常适合新手的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    我的博客,来看吧!

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

  • 相关阅读:
    Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法
    HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
    删除N天前的文件(夹)与拷贝文件到共享盘的批处理
    npm 常用命令
    使用scrapy crawl name启动一个爬虫时出现的问题
    anaconda和pycharm环境交叉的现象
    list和range()函数中使用反向索引的方法
    关于一些术语的解释
    关于assert和de-assert的解释
    搭建eclipse4.6(neon) + Pydev5.8.0 + python3.6(小版本3.6.1)
  • 原文地址:https://www.cnblogs.com/jiebba/p/6530806.html
Copyright © 2011-2022 走看看