欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

初识jQuery

程序员文章站 2024-01-26 10:20:22
...

什么是jQuery

JQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情.


jQuery的特点

  • 一款轻量级的js框架。

JQuery核心js文件才几十kb,不会影响页面加载速度。与Extjs相比要轻便的多。

  • 丰富的DOM选择器(CSS1-3 + XPath)

JQuery的选择器用起来很方便,好比要找到某个dom对象的相邻元素js可能要写好几行代码,而JQuery一行代码就搞定了,再比如要将一个表格的隔行变色,JQuery也是一行代码搞定。

  • 链式表达式

JQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
事件、样式、动画支持。
JQuery还简化了js操作css的代码,并且代码的可读性也比js要强。

  • Ajax操作支持

JQuery简化了AJAX操作,后台只需返回一个JSON格式的字符串就能完成与前台的通信。

  • 跨浏览器兼容

JQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。

  • 插件扩展开发

JQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前台页面上的组件都有对应插件,并且用JQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。

  • 可扩展性强

JQuery提供了扩展接口:JQuery.extend(object),可以在JQuery的命名空间上增加新函数。JQuery的所有插件都是基于这个扩展接口开发的。


如何在页面引入jQuery

<script src="//code.jquery.com/jquery-3.2.1.min.js"></script>

初识jQuery

  • jquery.min.js里的代码进行过特殊的处理,如变量的名称基本都写成一个字母,而且格式缩进都被删除了.
    所以文件容量比较小(min),一般在网页中调用这个文件.
  • jquery.js里的代码是没有进行处理的原代码,适合于人们阅读与研究.
  • sourcemap文件是js文件压缩后,文件的变量名替换对应、变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下。 比如压缩后原变量是map,压缩后通过变量替换规则可能会被替换成a,这时sourcemap文件会记录下这个mapping的信息,这样的好处就是说,在调试的时候,如果有一些JS报错,那么浏览器会通过解析这个map文件来重新merge压缩后的js,使开发者可以用未压缩前的代码来调试,这样会给我们带来很大的方便!而这种还原性调试功能,目前只有chorme才具有


    jQuery对象和Dom对象之间的区别与联系


    div与$div的联系是
    用如下两种方法可将$div对象转换成div对象
var $div=$('#x')
var div=$div.get(0)

var $div=$('#x')
var div=$div[0]

用如下方法可将div对象转换成$div对象

var div = document.getElementById('x')
var $div=$(div)

div与$div的区别是
div的属性方法有classList,className
$div返回的是一个数组,其属性方法有addClass(),ajaxSend(),length等属性与方法


自己封装一个jQuery方法

window.jQuery=function(nodeOrSelector){
        let nodes={}//声明一个空的node节点对象
        if(typeof nodeOrSelector==='string'){//如果当前获取的是多个节点
            let temp=document.querySelectorAll(nodeOrSelector)//选中所有的名字相同的选择器,返回给一个临时变量
            for(let i=0;i<temp.length;i++){//遍历返回的数组,赋给nodes
                nodes[i]=temp[i]
            }
            nodes.length=temp.length
        }
        else if(nodeSelector instanceof Node){//如果就获取一个节点
            nodes={
                0:nodeOrSelector,
                length:1
            }
        }
        nodes.addClass=function(classes) {//给选中的节点统一添加class

                for (let i = 0; i < nodes.length; i++) {
                    nodes[i].classList.add(classes)
                }

        }

            nodes.getText=function(){//获取选中的节点的text
                var texts=[]//初始化一个空数组
                for(let i=0;i<nodes.length;i++){//遍历获取的节点,通过数组的push方法依次压入初始化的数组,并返回该数组
                    texts.push(nodes[i].textContent)
                }
                return texts
            }
            nodes.setText=function (text) {//将选中的节点的内容统一设置c成text
                for(let i=0;i<nodes.length;i++){//遍历获取的节点,将自己传的参数text赋给当前节点的textContent
                    nodes[i].textContent=text;
                }

            }
            return nodes
        }
        var node2=jQuery('ul>li')

        node2.addClass(['blue'])
        node2.setText('hi')