IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> jquery学习 -> 正文阅读

[JavaScript知识库]jquery学习

一.定义:

jQuery:JavaScript的一个类库,它极大地简化了 JavaScript 编程。
jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数。
它有两个版本:一种是未压缩版一种是压缩版本(mini)

1.1 写法:

    <script>
        // 原生js的加载时通过这个语句设置页面加载后立刻执行操作
        window.onload = function (ev) {
        }
        // jquery中这么写
        $(document).ready(function () {
            alert("hi");
        })
    </script>

区别:

1.原生js和jQuery入口函数的加载模式不同
原生js会等到DOM元素加载完毕,并且图片也加载完毕后才会执行。
jQuery会等到DOM元素加载完,但不会等图片元素加载完就执行。

    <script src="js/jquery-3.5.1.js"></script>
    <script>
        // 原生js获得元素宽度
        window.onload = function () {
           var img = document.getElementsByTagName("img")[0];
           console.log(img);
           var width = window.getComputedStyle(img).width;
           console.log("onload",width);
        }
        // jquery获得元素宽度
        $(document).ready(function () {
            var $img = $("img")[0];
            console.log($img);
            var $width = $img.width;
            console.log("ready",$width);
        })
    </script>
<body>
<img src="https://gw.alicdn.com/tfs/TB176rg4VP7gK0jSZFjXXc5aXXa-286-118.png">
</body>

在这里插入图片描述
2.原生js如果编写了多个入口函数,后面的会覆盖前面的
jQuery如果编写了多个入口函数,后面的不会覆盖前面的。

//只会弹出hi2,不会弹出hi1
      window.onload = function () {
           alert("hi1");

        }
        window.onload = function () {
            alert("hi2");
        }
//两个都会弹出:先弹出hi1后弹出hi2
        $(document).ready(function () {
            alert("hi1");
        })
        $(document).ready(function () {
            alert("hi2");
        })

入口函数的四种写法:

常用的是第三种

    <script>
        $(document).ready(function () {
            alert("hi1");
        })

        jQuery(document).ready(function () {
            alert("hi2");
        })

        $(function () {
            alert("hi3");
        })

        $(function () {
            alert("hi4");
        })
    </script>

冲突问题:
前提:我们可能会用到不止jQuery一个JavaScript类库或者使用其他框架,可能在引用的其他文件中的$符号作用不同,此时会产生冲突。

解决方法一:取消 $在jquery中的意义,需要用到的地方用jquery代替。
注意这行代码要写在jquery代码的最前边。

jQuery.noConflict();

解决方法二:
设置其他字符代替$符号的意义。

var w = jQuery.noConflict();
w(function () {
            alert("hi3");
        })

核心函数学习:

2、3返回的都是一个jQuery对象。

 <script>
        $(function () {
            // 1.接受一个函数
            alert("hi1");
            // 2.接受一个字符串
            // 2.1 接受一个字符串选择器
            var $box = $(".box");
            console.log($box);

            var $box2 = $("#box2");
            console.log($box2);
            // 2.2 接受一个代码片段
            var $code =$("<p>我是小吴</p>");
            console.log($code);

            // 3.接受一个dom元素:会返回一个jquery对象,其中包含了dom元素
            var span = document.getElementsByTagName("span");
            var $span =$(span);
            console.log($span);
        })
    </script>

在这里插入图片描述

jQuery对象

1.jQuery对象:是一个伪数组
2.伪数组:有0到length-1的属性并有length属性
在这里插入图片描述

静态方法和实例方法:

    <script>
        function AClass() {
        }
        // 直接给类添加静态方法
        AClass.staticMethod = function () {
            alert("static");
        }
        // 静态方法用类名调用
        AClass.staticMethod();

        // 实例方法要创建一个实例调用
        AClass.prototype.instanceMethod =function () {
            alert("instance");
        }
       var a = new AClass();
        a.instanceMethod();
    </script>

静态方法

each方法:

回调函数:回调函数是作为参数传给另一个函数的函数,然后通过在外部函数内部调用该回调函数以完成某种操作。

    <script>
        //数组
        var arr = [1,23,45,6];
        // 伪数组
        var obj = {0:1,1:34,2:5,length:3};
        // 原生js可以通过foreach静态方法对数组进行遍历:这是一个匿名回调函数
        arr.forEach(function (value, index) {
            console.log(index,value);
        })
        // 但发现它无法遍历伪数组,会报错
        obj.foreach(function (value, index) {
            console.log(index,value);
        })
        
        // 用jquery遍历伪数组,注意两个参数顺序不同
        $.each(obj,function (index,value) {
            console.log(index,value);
        })
    </script>

map方法:

    <script>
        //数组
        var arr = [1,23,45,6];
        // 伪数组
        var obj = {0:1,1:34,2:5,length:3};

        arr.map(function (value,index) {
            console.log(index,value);
        })

        $.map(obj,function (value,index) {
            console.log(index,value);
        })

    </script>

jquery中两个方法的区别:
map源码:可以看到返回的是ret,一个空的数组;并且map方法可以在回调函数中通过return对遍历的数组进行处理,然后生成新的数组返回。

map: function( elems, callback, arg ) {
		var length, value,
			i = 0,
			ret = [];

		// Go through the array, translating each of the items to their new values
		if ( isArrayLike( elems ) ) {
			length = elems.length;
			for ( ; i < length; i++ ) {
				value = callback( elems[ i ], i, arg );

				if ( value != null ) {
					ret.push( value );
				}
			}

		// Go through every key on the object,
		} else {
			for ( i in elems ) {
				value = callback( elems[ i ], i, arg );

				if ( value != null ) {
					ret.push( value );
				}
			}
		}
		// Flatten any nested arrays
		return flat( ret );
	},

each源码:返回的是原数组,并且不支持在回调函数中对遍历的数组进行处理。

	each: function( obj, callback ) {
		var length, i = 0;

		if ( isArrayLike( obj ) ) {
			length = obj.length;
			for ( ; i < length; i++ ) {
				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
					break;
				}
			}
		} else {
			for ( i in obj ) {
				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
					break;
				}
			}
		}

		return obj;
	},

其他静态方法:

  1. trim:
    去除字符串两边的空格,返回一个新的字符串。
    <script>
        var str= "    inj    ";
        var res = $.trim(str);
        console.log(str);
        console.log(res);
    </script>
  1. isWindow()
    判断传入对象是不是window全局变量,返回值是布尔类型。
$.isWindow()
  1. isArray()
    判断是否是真数组,返回值是布尔类型。
$.isArray()
  1. isFunction()
    判断是否为函数,返回值是布尔类型。
    注:jquery整个类库本质上是个函数
$.isFunction()
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:33:33  更:2021-07-25 11:35:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 18:28:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码