美文网首页
28进阶 初识jQuery

28进阶 初识jQuery

作者: 饥人谷_二丫 | 来源:发表于2018-05-01 19:02 被阅读0次

jQuery就是一个javascript函数库
学习资料推荐:
阮一峰 jQuery
jQuery API文档 https://www.jquery123.com/

封装一个函数
  1. 获取一个节点的兄弟姐妹
function getSiblins(node) {}
  1. 给节点添加class
function addClass(node.calsses) {}
命名空间

命名空间就是一个可以由用户自己定义的作用域,在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区分它们。

命名空间的好处:
1.便于向别人介绍你写的库
2.防止互相冲突、覆盖
例如这样:

window.yydom={}
yydom.getSiblings=getSiblings
yydom.addClass=addClass
//使用
yydom.getSiblings(node)
yydom.addClass(node,classes)
把node放前面,像下面这样使用
node.getSiblings()
node.addClass()
  1. 方法一:扩展Node接口——直接在Node.prototype上加函数
    缺点:会互相覆盖
Node.prototype.getSiblings=function() {
  var allChildren=this.parentNode.children
  var array={length:0}
  for(let i=0;i<allChildren.length;i++) {
    if(allChildren[i]!==this) {
      array[array.length]=allChildren[i]
      array.length+=1
    }
  }
  return array
}
Node.prototype.addClass=function(classes) {
  for(let key in classes) {
    var value=classes[key]
    var methodName=value?'add':'remove'
    this.classList[methodName](key)
  }
}
item3.getSiblings()
//等价于items3.getSiblings.call(item3),上面item3自动由this传入
item3.addClass({a:true,b:false,c:true})
//等价于item3.addClass.call(item3,{a:true,b:false,c:true})

注:this就是call的第一个参数,

  1. 方法二:使用新的接口Node
    优点:无侵入
function Node2(node) {
  return {
    element:node,
    getSiblings:function() {
    
    },
    addClass:function() {

    }
  }
}
let node=document.getElementById('x')
let node2=Node2(node)
node2.getSiblings()
node2.addClass()
自己实现一个jQuery的API的方法

给上述的Node2改个名字为jQuery,就是一个简单的jQuery了
再给个缩写alias

window.$=jQuery

注:建议使用 jQuery 构造出来的对象都在前面加一个 $ ,以便记住它是jQuery的,避免和DOM弄混

window.jQuery = function (nodeOrSelector) {
    let nodes = {}
    if (typeof nodeOrSelector === 'string') {//判断接收的是结点还是字符串
        let temp = document.querySelectorAll(nodeOrSelector)
        for (let i = 0; i < temp.length; i++) {
            nodes[i] = temp[i]
        }
        nodes.length = temp.length
    } else if (nodeOrSelector instanceof Node) {
        nodes = {
            0: nodeOrSelector,
            length: 1
        }
    }
    nodes.addClass = function (classes) {
        for (let i = 0; i < nodes.length; i++) {
            nodes[i].classList.add(classes)
        }
    }
    nodes.setText = function (text) {
        for (let i = 0; i < nodes.length; i++) {
            nodes[i].textContent = text
        }
    }
    return nodes
}
window.$ = jQuery
var $div = $('div')
$div.addClass('red')//给div添加一个class='red'
$div.setText('hi')//将div的文本内容设置为'hi'
真正的jQuery远比这强大
  1. jQuery兼容性强大,1.7版本可以兼容IE6
  2. jQuery还有动画、AJAX等模块,不止DOM操作
  3. JQuery功能更丰富
  4. jQuery使用了prototype
作业

相关文章

  • 28进阶 初识jQuery

    jQuery就是一个javascript函数库学习资料推荐:阮一峰 jQueryjQuery API文档 http...

  • 28 进阶:jQuery初探

    课堂笔记 在判断相等与否时,应该只用“===”或“!==”而不用“==”或“!=”;在“===”的情况下,只有复杂...

  • JavaScript之jQuery

    九、jQuery 目录:初识jQuery及公式、jQuery选择器、jQuery事件、jQuery操作DOM元素 ...

  • 初识jQuery

    初识jQuery[jQuery基本原理](# jquery基本原理)[jQuery和JavaScript的区别](...

  • jQuery(样式和DOM)

    初识jQuery jQuery选择器 jQuery的属性与样式 DOM DOM节点的复制与替换 jQuery遍历

  • 2018-06-12

    从零玩转jQuery-初识jQuery 课前须知: 学习jQuery前必须先掌握JavaScriptjQuery虽...

  • 进阶篇:jQuery ajax & jsonp(21-3

    饥人谷学习进阶第 21 天 jQuery Ajax jQuery.ajax([settings]) 方法提供了几个...

  • 初识jQuery

  • 初识jQuery

    简介:jQuery是对JavaScript对象和函数的封装,如同后台方法一样,有各种方法会使用就行,提高工作效率不...

  • 初识JQuery

    1.JQuery能做什么? 选择网页元素改变结果集元素的操作工具方法事件操作特殊效果AJAX 2.JQuery对象...

网友评论

      本文标题:28进阶 初识jQuery

      本文链接:https://www.haomeiwen.com/subject/czzzlftx.html