jQuery初探

作者: JaniceZD | 来源:发表于2019-04-06 18:56 被阅读5次

1. 基础

什么是jQuery对象?

--- 就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的,可以使用jQuery里的方法。

jQuery的原型为 jQuery.prototype

2. 题目

(1)题目1

<ul>
    <li></li>
    <li></li>
</ul>

请写出 $('li') 的结构。
$('li') 是一个对象,它自身的 keylength,它的原型(共享属性)为 jQuery.prototypejQuery.prototypekeyaddClassremoveClasstexthtml等。

(2)题目2

<div id=x></div>
var div = document.getElementById('x')
var $div = $('#x')

请说出div$div的联系和区别。

  1. div$div的联系:
  • $div === $(div) ,即 $(div) 可以将 div 封装成一个jQuery对象
  • $div[0] === div ,即 $div 的第一项就是 div
  1. div$div的区别:
  • div 的属性和方法有 nodetypechildNodesfirstChild
  • $div 的属性和方法有 addClassremoveClasstoggleClass

3. jQuery对象和DOM对象的转换

  • jquery转dom
var div = $div[0]  

这样jquery就转换成了DOM对象,或 div = $div.get(0)

  • dom转jquery
var $div = $(div);  

这样dom对象div,就转换成了jquery对象。

4. 模拟jQuery实现API

window.jQuery = function(nodeOrSeletor){
  let nodes ={}
  if(typeof nodeOrSeletor === 'string'){
    let temp = document.querySelectorAll(nodeOrSeletor)
    for(let i=0;i<temp.length;i++){
      nodes[i] = temp[i]
    }
    nodes.length = temp.length
  }else if(nodeOrSeletor instanceof Node){
      nodes = {0: nodeOrSeletor,length: 1}
  }
  
  nodes.addClass = function(classes){
    classes.forEach((value) => {
      for(let i=0;i<nodes.length;i++){
        nodes[i].classList.add(value)
      }
    })
  }
  
  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('你好') // 可将所有 div 的 textContent 变为 hi

5. 其他的API

$nodes.addClass('red');
$nodes.addClass(function(index,currentClass){
      return 'sd-'+index;    //这样nodes里每一项会依次添加sd-0 sd-1 sd-2 sd-3 ......的class
    });  
var classes = ['red','blue','black'];
$nodes.addClass(function(index,currentClass){
      return classes[index];    //前三项就会添加red、blue、black的class
    });  

$nodes.removeClass('red');

$(x).on('click', function(){    //建一个button并给它id为x
    $nodes.toggleClass('red');  //每点一次button,nodes就增加或删除'red'class
})

相关文章

  • 初探jQuery

    实现一个jQuery的API 传一个选择器或节点 为nodes添加类,并且遍历nodes 遍历nodes,并且改变...

  • jQuery 初探

    在网页中,常常使用 HTML、CSS、javascript HTML 用于页面的布局,以及一些组件的布放 CSS ...

  • 初探jQuery

    封装一个函数html部分 选项1 选项2 选项3 选项4 选项5 js部分function getSi...

  • jQuery初探

    造两个简单版的jQuery函数 面试题

  • jQuery初探

    1. 基础 什么是jQuery对象? --- 就是通过jQuery包装DOM对象后产生的对象。jQuery对象是j...

  • Jquery初探

    node.querySelectorAll获取到的是一个伪数组,为了以后使用方便应该变成一个简单的对象。 一个对象...

  • 初探jQuery

    jQuery API的实现 自己模拟jQuery的一个API预览:http://js.jirengu.com/pa...

  • JQuery初探

    jQuery 在兼容性方面做得很好,1.7 版本兼容到 IE 6 jQuery 还有动画、AJAX 等模块,不止 ...

  • jQuery初探

    自己封装两个函数 第一个函数,查询一个节点的兄弟姐妹 首先,先实现以下怎么获取一个节点的兄弟姐妹,并将其全部放到一...

  • JS#4 jQuery初探

    初探jQuery简单源码 1.封装两个函数 function getSiblings(node){}functio...

网友评论

    本文标题:jQuery初探

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