摘要:一初步了解介绍由创建于年一月的开源项目,凭借着跨平台的兼容性,简洁的语法,极大的简化了人员遍历文档,操作,处理事件,执行动画,和开发的操作。只建立一个名为的对象。对发生在同一个对象上的一组动作,可以直接连写无需重复获取对象。
jQuery(一)-- 初步了解 jQuery介绍
由John Resig创建于2006年一月的开源项目,jQuery凭借着跨平台的兼容性,简洁的语法,极大的简化了JavaScript人员遍历HTML文档,操作DOM,处理事件,执行动画,和开发Ajax的操作。jQuery优点
轻量级。采用Uglifys压缩后保持再30kb左右。
拥有强大的选择器。jQuery允许开发者使用CSS1到CSS3几乎所有选择器,以及jQuery独创的高级而复杂的选择器。
出色的DOM封装操作。jQuery封装了大量常用的DOM操作,使开发者再编写DOM操作相关程序的时候能够得心应手。
可靠的事件处理机制。jQuery的事件处理机制吸收了Javascript专家编写的Dean Edwards编写的事件处理函数的精华,使得jQuery再处理事件绑定的时候相当可靠。在预留退路(graceful degradation)、循序渐进以及非入侵式(Unobtrusive)编程思想方面,jQuery也做得非常不错。
完善的Ajax。jQuery将所有的ajax操作封装到一个函数$.ajax()里,使得开发者处理Ajax的时候能够专心处理业务逻辑而无需关心复杂的浏览器兼容性和XMLHttpRequest对象的创建和使用问题。
不污染顶级变量。jQuery只建立一个名为jQuery的对象。其所有的函数方法都在这个对象之下。其别名$也可以随时交出控制权,绝对不会污染其他的对象。使得jQuery库可以与其他Js库共存
出色的浏览器兼容性
链式操作方式。对发生在同一个jQuery对象上的一组动作,可以直接连写无需重复获取对象。
隐式迭代。当用jQuery找到带有.myClass类的全部元素时,无需循环遍历每一个返回的元素。
行为层与结构层的分离。开发者可以使用jQuery选择器选中元素,然后直接给元素添加事件。简单的来说就是可以在js中操作html。
丰富的插件支持。
完善的文档。
开源
jQuery使用可以通过node.js自带的包管理器npm或者bower等包管理器下载,也可以通过官网下载
npm下载/cnpm下载/bower下载
npm i jquery/cnpm i jquery/bower i jquery
官网下载
https://code.jquery.com/jquery-3.4.1.min.js,另存为Js文件即可,也可以在线引用
开始之前需要知道一点,在jQuery库中,$就是jQuery的一个简写形式,例如$("#foo")和jQuery("#foo")是等价的,$.ajax和jQuery.ajax是等价的。
//引入jQuery
其中$(document).ready();这段代码类似于window.onload的作用,但是其中有些差别
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 必须等待网页中所有的内容加载完毕后(包括图片)才能执行 | 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没有加载完 |
编写个数 | 不能同时编写多个,以下代码无法正确执行:window.onload = function(){alert("test")};window.onload = function(){alert("test2");}结果只会输出“test2” | 能同时编写多个,以下代码能够正确执行:$(document).ready(function(){alert("hello world");}) $(document).ready(function(){alert("hello again")};);结果两次都输出 |
简化写法 | 无 | $(document).ready(function(){//....};)可以简写为$(function(){}); |
我的理解是通过.运算符来链接层级操作,类似于Js原生的document.getElementById("#app").value这样的。
(1)对于同一个对象不超过三个操作的,可以直接写成一行。
``$("li").show().unbind("click");
(2)对于同一个对象不超过三个操作的,建议每行写一个操作
$(this).removeClass("mouseout") .addClass("mouseout") .stop() .fadeTo("fast",0.6) .fadeTo("fast",1) .unbind("click")
(3)对于多个对象的少量操作,可以每个对象写一行,如果涉及子元素,可以考虑适当地缩进,例如上面提到的代码。
$(this).addClass("highlight").children("li").show().end() --------------------------------------------------------- $(this).addClass("highlight") .children("li").shiw().end()
$("#table > tbody > tr:has(td:has(:checkbox:enabled))").css("background","red");
这一行代码就算是精通jQuery的人也不一定能一眼就看出作用,通过有意义的注释可以提高开发效率
//在一个id为table的表格的tbody中,如果每行的一列中的checkbox没有被禁用,则把这行的背景设为红色 $("#table > tbody > tr:has(td:has(:checkbox:enabled))").css("background","red");jQuery对象和DOM对象
每一份DOM都可以表示成一颗树,树的内容为html代码的标签元素,按层级表示
//...
。。。jQuery对象就是通过jQuery包装DOM对象后产生的对象。
//通过获取id为foo的元素内的html代码。.html()是jQuery里的方法
DOM对象操作 | jQuery对象操作 |
---|---|
document.getElementById("foo").innerHTML | $("#foo").html() |
注意:
在jQuery对象中无法使用DOM对象的任何方法。,DOM对象中也不能使用任何jQuery方法。
像DOM对象有innerHTML方法,但是jQuery中没有;jQuery对象中有html()方法,但是DOM中没有。
jQuery对象和DOM对象的互相转换在讨论此之前规定好代码规范:
如果获取的是jQuery对象,那么在变量前面加上$
var $variable = jquery对象
如果获取的是DOM对象,
var variable = DOM对象
jQuery 对象不能使用DOM 中的方法,但如果对 jQuery 对象所提供的方法不熟悉,或者 jQuery 没有封装想要的方法,不得不使用 DOM 对象的时候,有以下两种处理方法。
jQuery 提供了两种方法将一个jQuery对象转换成 DOM 对象,即[index]和get(index)
案例html代码:
(1)jQuery对象是一个类似于数组的对象,可以通过[index]的方法得到相应的DOM对象
var $cr = $("#cr"); //jquery 对象 var cr = $cr[0]; //DOM 对象 alert(cr.checked); //检测这个checkbox是否被选中
(2)另一种方法是jQuery 本身提供的,通过get(index)方法得到相应的 DOM 对象
var $cr = $("#cr"); //jquery 对象 var cr = $cr.get(0); //DOM 对象 alert(cr.checked); //检测这个checkbox是否被选中
对于一个 DOM 对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。方式为$(DOM对象)
var cr = document.getElemntById("cr"); //DOM 对象 var $cr = $(cr); //jQuery 对象
转换后,可以任意使用jQuery 中的方法。
通过以上方法,可以任意相互转换jQuery 兑现和 DOM 对象。
范例代码)
解决jQuery库与其他库的冲突在jQuery 库中,几乎所有的插件都被限制在它的命名空间里 -- jQuery。通常,全局对象都被很厚地储存在jQuery 命名空间里,因此当jQuery 库和其他JavaScript 库一起使用时不会引起冲突。
默认情况下,jQuery用 -- $作为快捷方式。
一共有三种方式,其中第三种有两种方法
方式一:移交“$”使用权
jQuery.noConflict(); //将变量$ 的控制权交给prototype.js /** * 在该函数内就可以用“jQuery”代替字符“$”使用jquery */ jQuery(function(){//使用jQuery jQuery("p").click(function(){ alert(jQuery(this).text()); }) }) $("pp").style.display = "none"; //使用pototype.js隐藏元素
方式二:起别名
var $J = jQuery.noConflict(); //自定义快捷方式 /** * 同样的,在这里可以使用“$J”代替字符“$”使用jquery */ $J(function(){ $J("p").click(function(){ alert($J(this).text()); }) }) $("pp").style.display = "none";
方式三:既可以使用字符$,又不用起别名
其一:移交使用权时传参,之后就可以在jQuery方法内使用字符$而不用别名
jQuery.noConflict(); //使用jQuery设定页面加载时执行的函数传参 jQuery(function($){ $("p").click(function(){ alert($(this).text()); }) }); $("pp").style.display = "none";
其二:类似于一,不过是使用匿名函数
jQuery.noConflict(); //匿名函数内部的 $ 均为jQuery (function($){ $("p").click(function(){ alert($(this).text()); }) }) $("pp").style.display = "none";
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/106673.html
摘要:进一步了解类数组对象可以看这篇文章对象的构建和分离构造器然后我们回来看看,让我们悲伤的代码。。。然后又通过下面的语句,将两个独立的构造器关联起来了。 背景 不造轮子的程序员不是好程序员,所以我们今天尝试造一下轮子。今天的主角是 jQuery ,虽然现在市面上已被 React,Angular,Vue 等挤的容不下它的位置,但是它的简单 API 设计依然优秀,值得学习和体会。 任务 今天造...
摘要:由于是基于的,因此对有一定的了解会对的理解和使用有较大帮助。由于是基于的,因此有视图和模型的概念。挂载的元素关联声明的元素的概念,就是图形显示的主体,可以有各种不同的形状,预设有常用的矩形椭圆平行四边形等。 一、jointJS简介 jointJS是一个基于svg的图形化工具库,在画布上画出支持拖动的svg图形,而且可以导出JSON,也能通过JSON配置导入直接生成图形。 可以基于joi...
摘要:大部分人都知道回调函数在中被发挥的淋漓尽致,然而新手往往很少知道回调函数原理,所以接下来我们仍以这个栗子为代表探讨回调函数。这就是对回调函数的简单讲解,萌新程序员,欢迎纠错 JS的异步执行机制 什么是异步执行 为了提高Javascript代码的运行效率,JS对于部分函数方法采用了异步调用机制(如Ajax的操作)。异步执行的函数方法的执行并非为一个队列挨个执行的,而是相互独立,同时调用执...
摘要:学编程真的不是一件容易的事不管你多喜欢或是多会编程,在学习和解决问题上总会碰到障碍。熟练掌握核心内容,特别是和多线程初步具备面向对象设计和编程的能力掌握基本的优化策略。 学Java编程真的不是一件容易的事,不管你多喜欢或是多会Java编程,在学习和解决问题上总会碰到障碍。工作的时间越久就越能明白这个道理。不过这倒是一个让人进步的机会,因为你要一直不断的学习才能很好的解决你面前的难题...
摘要:在这一节,我们碰到的片段是一组立即运行的匿名函数。匿名函数的调用要调用一个函数,我们必须要有方法定位它,引用它。那么很显然,没有任何实现的匿名函数不可能应用了闭包特性。 代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴...
阅读 2578·2023-04-26 03:00
阅读 1392·2021-10-12 10:12
阅读 4189·2021-09-22 15:33
阅读 2907·2021-09-22 15:06
阅读 1529·2019-08-30 15:44
阅读 2143·2019-08-30 13:59
阅读 533·2019-08-30 11:24
阅读 2406·2019-08-29 17:07