jquery详解

1、jQuery概述

1.1、JavaScript库

仓库:可以把很多东西放到这个仓库里面。 找东西只需要到仓库里面查找到就可以了。

JavaScript库:即library ,是-个封装好的特定的集合(方法和函数)。从封装-大堆函数的角度理解库,就是在这个库中,卦装了很多预先定义好的函数在面,比如动画animate、hide、 show ,比如获取元素等。

简单理解:就是一个JS 文件,里面对我们原生js代码进行了封装,存放到里面。这样我们可以快速高效的使用这些封装好的功能了。

比如jQuery ,就是为了快速方便的操作DOM ,里面基本都是函数(方法)。

常见的JavaScript库

  • jQuery
  • Prototype
  • YUI
  • Dojo
  • Ext JS
  • 移动端的zepto

这些库都是对原生JavaScript的封装,内部都是用JavaScript实现的,我们主要学习的是jQuery

1.2、jQuery概念

jQuery是一个快速、简洁的JavaScript库,其设计的宗旨是"write Less , Do More”, 即倡导写更少的代码,做更多的事情。

j就是JavaScript; Query 查询;意思就是查询js ,把js中的DOM操作做了封装,我们可以快速的查询使用里面的功能。

**jQuery封装了JavaScript常用的功能代码,**优化了DOM操作、事件处理、动画设计和Ajax交互。

学习jQuery本质:就是学习调用这些函数(方法)。

jQuery出现的目的是加快前端人员的开发速度,我们可以非常方便的调用和使用它,从而提高开发效率。

jQuery是一个快速、简洁的JavaScript库,其设计的宗旨是"write Less , Do More”, 即倡导写更少的代码,做更多的事情。

优点

  • 轻量级。核心文件才几十kb ,不会影响页面加载速度
  • 跨浏览器兼容。基本兼容了现在主流的浏览器
  • 链式编程、隐式迭代
  • 对事件、样式、动画支持,大简化了DOM操作
  • 支持插件扩展开发。有着丰富的第三方的插件,例如:树形菜单、日期控件、轮播图等
  • 免费、开源

2、jQuery的基本使用

2.1、jQuery下载

官网:jquery.com

版本:

  • 1x:兼容IE 678等低版本浏览器,官网不再更新
  • 2x:不兼容IE 678等低版本浏览器,官网不再更新
  • 3x:不兼容IE 678等低版本浏览器,是官方主要更新维护的版本

各个版本下载:https://code.jquery.com/

2.2、jquery使用

1.引入jquery文件

<script src="jquery.min.js"></script>

jquery.min.js

2.3、jquery的入口函数

在这里插入图片描述

1.等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成, jQuery帮我们完成了封装。
2.相当于原生js中的DOMContentLoaded.
3.不同于原生js中的load事件是等页面文档、外部的js 文件、Css文件、 图片加载完毕才执行内部代码。

2.4、jQuery的顶级对象$

在这里插入图片描述

<script>
    $(function(){
     
        alert(11)
    });
</script>
<script>
    jQuery(function(){
     
        alert(11)
    });
</script>
  1. 是 j Q u e r y 的 别 称 , 在 代 码 中 可 以 使 用 j Q u e r y 代 替 是jQuery的别称,在代码中可以使用jQuery代替 jQuery,使jQuery ,但-般为了方便,通常都直接使用$.
  2. 是 j Q u e r y 的 顶 级 对 象 , 相 当 于 原 生 J a v a S c r i p t 中 的 w i n d o w 。 把 元 素 利 用 是jQuery的顶级对象,相当于原生JavaScript中的window。把元素利用 jQuery,JavaScriptwindow包装成jQuery对象,就可以调用jQuery的方法。

2.5、jQuery对象和DOM对象

  1. 用原生JS获取来的对象就是DOM对象

  2. jQuery方法获取的元素就是jQuery对象。

  3. jQuery对象本质是:利用$对DOM对象包装后产生的对象(伪数组形式存储)。
    在这里插入图片描述

jQuery对象和DOM对象之间是可以相互转换的。

因为原生js比jQuery更大,原生的一些属性和方法 jQuery没有给我们封装要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。

  1. DOM对象转换为jQuery对象: $(DOM对象)
$('div')
  1. jQuery对象转化为DOM对象(两种方式)
$("div')[index]        index是索引号
$("div').get(index)    index是索引号

在这里插入图片描述

3、jQuery选择器

3.1、jquery基础选择器

原生JS获取元素方式很多,很染,且兼容性情况不致,因此jQuery给我们做了封装,使获取元素统标准。

$("选择器")   // 里面选择器直接写CSS选择器即可,但是要加引号

<script>
	$(function(){
     
        console.log($(".nav"));
    });
</script>

在这里插入图片描述

3.2、jQuery层级选择器

在这里插入图片描述

<script>
	$(function(){
     
        console.log($("ul li"));
    });
</script>

在这里插入图片描述

3.3、隐式迭代

遍历内部DOM元素(伪数组形式存储)的过程就叫做隐式迭代。

简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法,而不用我们再进行循环,简化我们的操作,方便我们调用。
在这里插入图片描述

3.4、jQuery筛选选择器

在这里插入图片描述

<script>
	$(function(){
     
        $("ul li:first").css("color","red");
		$("ul li:eq(2)").css("color", "blue");
		$("o1 li:odd").css("color", "skyblue");
		$("o1 li:even") .css("color","pink");
    });
</script>

3.5、jQuery筛选方法(重点)

在这里插入图片描述

重点记住parent() children() find() siblings() eq()

在这里插入图片描述

新浪下拉菜单

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
     
            margin: 0;
            padding: 0;
        }
        
        li {
     
            list-style-type: none;
        }
        
        a {
     
            text-decoration: none;
            font-size: 14px;
        }
        
        .nav {
     
            margin: 100px;
        }
        
        .nav>li {
     
            position: relative;
            float: left;
            width: 80px;
            height: 41px;
            text-align: center;
        }
        
        .nav li a {
     
            display: block;
            width: 100%;
            height: 100%;
            line-height: 41px;
            color: #333;
        }
        
        .nav>li>a:hover {
     
            background-color: #eee;
        }
        
        .nav ul {
     
            display: none;
            position: absolute;
            top: 41px;
            left: 0;
            width: 100%;
            border-left: 1px solid #FECC5B;
            border-right: 1px solid #FECC5B;
        }
        
        .nav ul li {
     
            border-bottom: 1px solid #FECC5B;
        }
        
        .nav ul li a:hover {
     
            background-color: #FFF5DA;
        }
    </style>
    <script src="jquery.min.js"></script>
</head>

<body>
    <ul class="nav">
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        $(function() {
     
            // 鼠标经过
            $(".nav>li").mouseover(function() {
     
                // $(this) jQuery 当前元素  this不要加引号
                // show() 显示元素  hide() 隐藏元素
                $
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery 是一个非常流行的 JavaScript 库,它简化了 JavaScript 代码的编写和操作 DOM 的过程。以下是 jQuery 源码的逐行详解: ```javascript (function( global, factory ) { "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { // 如果是 CommonJS 规范,则添加到模块中 // 在 Node.js 环境中,module 对象代表当前模块,exports 对象是 module 的属性,用于指定模块对外输出的接口。 // 通过 exports 对象把模块导出,其他文件就可以通过 require() 函数来引用该模块。 module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { // 如果是浏览器环境,则将 jQuery 添加到全局对象 window 中 factory( global ); } // 在这里传入了两个参数,global 和 factory,分别表示全局对象和一个工厂函数 }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { "use strict"; var deletedIds = []; var document = window.document; var slice = deletedIds.slice; var concat = deletedIds.concat; var push = deletedIds.push; var indexOf = deletedIds.indexOf; // ... ``` 这段代码定义了一个立即执行函数,其目的是为了防止变量污染全局作用域。如果是在 Node.js 环境中,那么需要将 jQuery 添加到模块中,否则将 jQuery 添加到全局对象 window 中。然后定义了一些变量,包括 deletedIds、document、slice、concat、push 和 indexOf 等。这些变量都是为了后面的代码服务。 ```javascript var version = "3.6.0", // 定义了一个空函数 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }, // ... ``` 这里定义了 jQuery 的版本号和 jQuery 函数。jQuery 函数是一个工厂函数,用于创建 jQuery 对象,其实现是通过调用 jQuery.fn.init 函数实现的。 ```javascript jQuery.fn = jQuery.prototype = { // jQuery 对象的方法和属性 }; jQuery.fn.init.prototype = jQuery.fn; ``` 这里定义了 jQuery 对象的原型,包括 jQuery.fn 和 jQuery.prototype。jQuery.fn 和 jQuery.prototype 是等价的,都是为了扩展 jQuery 对象的方法和属性。同时还将 jQuery.fn.init 的原型指向了 jQuery.fn,这样可以让 jQuery.fn.init 实例化出来的对象拥有 jQuery.fn 的方法和属性。 ```javascript jQuery.extend = jQuery.fn.extend = function() { // ... }; jQuery.extend({ // 一些静态方法和属性 }); jQuery.fn.extend({ // 一些实例方法和属性 }); ``` 这里定义了 jQuery 的 extend 方法,用于实现对象的合并。同时还定义了一些静态方法和属性,以及一些实例方法和属性。 ```javascript jQuery.expr = { // ... }; jQuery.expr[ ":" ] = { // ... }; ``` 这里定义了 jQuery 的表达式引擎,用于实现选择器的解析。其中,jQuery.expr 是一个对象,存储了所有的选择器类型。jQuery.expr[ ":" ] 表示的是伪类选择器。 ```javascript jQuery.ajax = function( url, options ) { // ... }; jQuery.fn.load = function( url, params, callback ) { // ... }; ``` 这里定义了 jQuery 的 ajax 和 load 方法,用于实现异步请求和载入 HTML 片段。 ```javascript var // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$; jQuery.noConflict = function( deep ) { // ... }; if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } ``` 这里定义了 jQuery 的 noConflict 方法,用于解决命名冲突问题。同时还保存了 window.jQuery 和 window.$ 的引用,以便在需要时恢复原来的状态。最后,将 jQuery 和 $ 添加到全局对象 window 中。 以上是 jQuery 源码的部分逐行详解,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值