jQuery选择器的工作原理和优化

合集下载

jQuery课堂笔记(选择器)

jQuery课堂笔记(选择器)

jQuery选择器总结jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法$("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素$("div") 选择所有的div标签元素,返回div元素数组$(".myClass") 选择使用myClass类的css的所有元素$("*") 选择文档中的所有的元素,可以运用多种的选择方式进行联合选择:例如$("#myELement,div,.myclass")层叠选择器:$("form input") 选择所有的form元素中的input元素$("#main > *") 选择id值为main的所有的子元素$("label + input") 选择所有的label元素的下一个input元素节点,经测试选择器返回的是label标签后面直接跟一个input标签的所有input标签元素$("#prev ~ div") 同胞选择器,该选择器返回的为id为prev的标签元素的所有的属于同一个父元素的div标签基本过滤选择器:$("tr:first") 选择所有tr元素的第一个$("tr:last") 选择所有tr元素的最后一个$("input:not(:checked) + span")过滤掉:checked的选择器的所有的input元素$("tr:even") 选择所有的tr元素的第0,2,4... ...个元素(注意:因为所选择的多个元素时为数组,所以序号是从0开始)$("tr:odd") 选择所有的tr元素的第1,3,5... ...个元素$("td:eq(2)") 选择所有的td元素中序号为2的那个td元素$("td:gt(4)") 选择td元素中序号大于4的所有td元素$("td:ll(4)") 选择td元素中序号小于4的所有的td元素$(":header")$("div:animated")内容过滤选择器:$("div:contains('John')") 选择所有div中含有John文本的元素$("td:empty") 选择所有的为空(也不包括文本节点)的td元素的数组$("div:has(p)") 选择所有含有p标签的div元素$("td:parent") 选择所有的以td为父节点的元素数组可视化过滤选择器:$("div:hidden") 选择所有的被hidden的div元素$("div:visible") 选择所有的可视化的div元素属性过滤选择器:$("div[id]") 选择所有含有id属性的div元素$("input[name='newsletter']") 选择所有的name属性等于'newsletter'的input元素$("input[name!='newsletter']") 选择所有的name属性不等于'newsletter'的input元素$("input[name^='news']") 选择所有的name属性以'news'开头的input元素$("input[name$='news']") 选择所有的name属性以'news'结尾的input元素$("input[name*='man']") 选择所有的name属性包含'news'的input 元素$("input[id][name$='man']") 可以使用多个属性进行联合选择,该选择器是得到所有的含有id属性并且那么属性以man结尾的元素子元素过滤选择器:$("ul li:nth-child(2)"),$("ul li:nth-child(odd)"),$("ul li:nth-child(3n + 1)")$("div span:first-child") 返回所有的div元素的第一个子节点的数组$("div span:last-child") 返回所有的div元素的最后一个节点的数组$("div button:only-child") 返回所有的div中只有唯一一个子节点的所有子节点的数组表单元素选择器:$(":input") 选择所有的表单输入元素,包括input, textarea, select 和 button$(":text") 选择所有的text input元素$(":password") 选择所有的password input元素$(":radio") 选择所有的radio input元素$(":checkbox") 选择所有的checkbox input元素$(":submit") 选择所有的submit input元素$(":image") 选择所有的image input元素$(":reset") 选择所有的reset input元素$(":button") 选择所有的button input元素$(":file") 选择所有的file input元素$(":hidden") 选择所有类型为hidden的input元素或表单的隐藏域表单元素过滤选择器:$(":enabled") 选择所有的可操作的表单元素$(":disabled") 选择所有的不可操作的表单元素$(":checked") 选择所有的被checked的表单元素$("select option:selected") 选择所有的select 的子元素中被selected的元素选取一个 name 为”S_03_22″的input text框的上一个td的text值$(”input[@ name =S_03_22]“).parent().prev().text()名字以”S_”开始,并且不是以”_R”结尾的$(”input[@ name ^='S_']“).not(”[@ name $='_R']“)一个名为 radio_01的radio所选的值$(”input[@ name =radio_01][@checked]“).val();$("A B") 查找A元素下面的所有子节点,包括非直接子节点$("A>B") 查找A元素下面的直接子节点$("A+B") 查找A元素后面的兄弟节点,包括非直接子节点$("A~B") 查找A元素后面的兄弟节点,不包括非直接子节点1. $("A B") 查找A元素下面的所有子节点,包括非直接子节点例子:找到表单中所有的 input 元素HTML 代码:<form><label>Name:</label><input name="name" /><fieldset><label>Newsletter:</label><input name="newsletter" /></fieldset></form><input name="none" />jQuery 代码:$("form input")结果:[ <input name="name" />, <input name="newsletter" /> ] 2. $("A>B") 查找A元素下面的直接子节点例子:匹配表单中所有的子级input元素。

jQuery中的通配符选择器使用总结

jQuery中的通配符选择器使用总结

jQuery中的通配符选择器使⽤总结jquery选择器中的通配符经常⽤到,⼤致的⽤法总结如下:$("input[id^='code']");//id属性以code开始的所有input标签$("input[id$='code']");//id属性以code结束的所有input标签$("input[id*='code']");//id属性包含code的所有input标签$("input[name^='code']");//name属性以code开始的所有input标签$("input[name$='code']");//name属性以code结束的所有input标签$("input[name*='code']");//name属性包含code的所有input标签使⽤⽰例$("input[name*='code']").each(fuction(){var sum=0;if($(this).val()!=""){sum=parseInt(sum)+parseInt($(this).val());}$("#").text(sum);})使⽤时注意关于如下input:<input type="text" name="code[0]" id="haorooms[0]" />请不要⽤$("#haorooms[0]")进⾏选择,这样通常会出现问题,特别是select的时候。

要⽤如下⽅式$("input[id^='haorooms']")或者$("input[name^='code']")这样效率上⾯不如直接ID,但是不会出错,假如上⾯的name和id都没有后缀[0],那么推荐直接⽤Id选择器来选择!。

jQuery选择器用法介绍

jQuery选择器用法介绍

jQuery选择器⽤法介绍⽬录⼀、jQuery选择器⼆、基本选择器三、层次选择器四、属性选择器五、过滤选择器1、基本过滤选择器2、可见性过滤选择器3、内容过滤器六、表单选择器七、补充1、特殊符号的转义2、选择器中的空格jQuery选择器类似于CSS选择器,⽤来选取⽹页中的元素。

例如:$("h3").css("background-color","red");说明:获取并设置⽹页中所有<h3>元素的背景⾊。

“h3”为选择器语法,必须放在$()中。

$("h3")返回jQuery对象。

⼀、jQuery选择器jQuery选择器功能强⼤,种类也很多,分类如下:1、类CSS选择器基本选择器层次选择器属性选择器2、过滤选择器基本过滤选择器可见性过滤选择器3、表单选择器4、内容过滤器⼆、基本选择器基本选择器语法如下图所⽰:⽰例:<!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>jQuery基本选择器⽰例</title><style>#box{background-color: #ffffff;border: 2px solid #000000;padding: 5px;}</style><script src="jquery-3.3.1.js"></script><script>$(function(){// id选择器$("#btn").click(function(){// 标签选择器选择h3标签并将其添加背景颜⾊$("h3").css("background-color","red");// 类选择器选取并设置所有class为title的元素的背景颜⾊$(".title").css("background-color","#09F");// id选择器选取并设置id为box的元素的背景颜⾊$("#box").css("background-color","#09F");// 并集选择器相当于css中的群组选择器选取并设置所有的h2、dt、class为title//的元素的背景⾊$("h2,dt,.title").css("background-color","#09A");// 交集选择器等同于CSS中的指定标签选择器选取并设置class为title的h3标签的背景⾊$("h3.title").css("background-color","yellow");// 全局选择器改变所有元素的字体颜⾊$("*").css("color","blue");});});</script></head><body><input type="button" id="btn" value="显⽰效果" /><div id="box" style="margin-top:10px;">id为box的div<h2 class="title">class为title的h2标签</h2><h3 class="title">class为title的h3标签</h3><h3>热门排⾏</h3><dl><dt><img src="qq.jpg" width="391" height="220" alt="⽃地主" /></dt><dd class="title">⽃地主</dd><dd>休闲游戏</dd><dd>QQ⽃地主是国内同时在线⼈数最多的棋牌游戏......</dd></dl></div></body></html>效果:三、层次选择器层次选择器通过DOM元素之间的层次关系来获取元素,语法如下:请看下⾯的⽰例需求说明:点击标题,使⽤层次选择器选择不同的元素使得其背景⾊为蓝⾊,如下图所⽰:代码:<!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>层次选择器演⽰⽰例</title><!--css样式--><style>*{margin: 0px;padding: 0px;line-height: 30px;}body{margin: 10px;}#menu{border: 2px solid #0033cc;padding: 10px;}a{text-decoration: none;margin-right: 5px;}span{font-weight: bold;padding: 3px;}h2{margin: 10px;cursor: pointer;/*⿏标为⼿状*/}</style><!--引⼊jQuery--><script src="jquery-3.3.1.js"></script><!--javascript--><script>$(function(){// 点击h2标题时改变背景⾊$("h2").click(function(){// 后代选择器获取并设置#menu下的span元素的背景⾊$("#menu span").css("background-color","blue");// ⼦选择器获取并设置#travel下的a元素的背景⾊$("#travel>a").css("background-color","red");// 相邻选择器只会选择第⼀个相邻的元素//获取并设置#ticket下的第⼀个a元素的背景⾊$("#ticket+a").css("background-color","red");// 同辈选择器会选择所有的元素//获取并设置#rest下的所有a元素的背景⾊$("#rest~a").css("background-color","yellow");});});</script></head><body><div id="menu"><h2 title="点击查看效果">全部旅游产品分类</h2><dl><dt>北京周边旅游<span>特价</span></dt><dd id="travel"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow"<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow"<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </dd></dl><dl><dt>景点门票</dt><dd ><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow </dd><dd ><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow </dd></dl><span>更多分类</span></div></body></html>效果:四、属性选择器属性选择器通过HTML元素的属性来选择元素。

jquery用法

jquery用法

jquery用法jQuery是一种广泛应用于网页开发的JavaScript库,它极大地简化了HTML 文档遍历、事件处理、动画设计等常见的客户端脚本操作。

下面是jQuery的一些常见用法:1.选择器: jQuery提供了许多选择器来获取HTML元素,如元素选择器、id选择器、class选择器、属性选择器、伪类选择器、层次选择器等。

以下是一些常见的选择器:•('#element'):选择具有特定ID的元素•('.class'):选择具有特定类的元素•('input[type=“text”]'):选择特定类型的表单元素•('div:first'):选择第一个div•('ul li').eq(2):选择ul下的第二个li元素2.事件处理: jQuery使得添加和处理事件变得容易。

以下是一些常见的事件处理函数:•click():单击元素时触发•dblclick():双击元素时触发•mouseenter():鼠标移入元素时触发•mouseleave():鼠标移出元素时触发•keydown():按下键盘上的键时触发3.属性: jQuery提供了完善的属性操作,可以改变和获取元素的属性,例如:•attr(): 获取或设置元素的属性值•removeAttr(): 删除元素的属性值•prop(): 获取或设置元素的属性值,与attr()不同之处在于property值不会随着属性值的改变而改变4.动画效果: jQuery内置了一些动画效果,可以使网页更加动态。

以下是一些常见的动画效果:•fadeIn():淡入元素,即从不可见到可见•fadeOut():淡出元素,即从可见到不可见•slideDown():向下展开元素•slideUp():向上收缩元素•animate():通过改变元素的CSS属性来创建自定义的动画效果5. AJAX: jQuery内置了AJAX的方法,可以在不刷新网页的情况下从服务器获取数据。

第二章jQuery选择器

第二章jQuery选择器

2.5、 2.5、选择器中的一些注意事项 2.5.2、选择器中包含空格 5.2、 5.2 选择器中的空格是不容忽视的, 选择器中的空格是不容忽视的,多一个空格 或少一个空格会得到截然不同的结果. 或少一个空格会得到截然不同的结果. 如: $(“div:input”) 和 $(“div :input”) 具体区别请大家自己上机实践总结。 具体区别请大家自己上机实践总结。
:visible
选择所有可见元素
集合元素
2.3.4、 2.3.4、属性过滤选择器
选择器 [attribute] [attribute=val ue] [attribute!=va lue] [attribute^=va lue] [attribute$=va lue] [attribute*=va lue] [A1][A2]…A[N] 描述
:first-child
选择每个父元素的第1个 子元素
集合元素
:last-child :only-child
选取每个父元素的最后1 个子元素 如果某个元素是它父元 素中惟一的子元素,那么 将会被匹配.如果父元素 中含有其他元素,则不会 被匹配
集合元素
集合元素
2.3.5、 2.3.5、子元素过滤选择器 • :nth-child()选择器详细功能描述:
– 4、表单选择器
2.1、jQuery基本选择器 2.1、jQuery基本选择器
选择器 #id .class Element * E1,E2,E3 描述
根据指定的id匹配元素 根据类匹配元素
返回
单个元素 集合元素
示例 $(“#hel”)选择id=hel的元素 $(“#hel”) hel”) $(“.hel”)选择class=hel的 $(“.hel”) hel”) 元素 $(“div”)选择所有的div元素 $(“*”)选择所有元素 $(“div,span,.hotclass”)选 择所有div,span,和class为 hotcalss的元素

jq常用方法

jq常用方法

jq常用方法jq是一个快速、简洁、灵活的JavaScript库,它允许我们轻松地操纵HTML文档,解析和处理JSON数据、处理表单和事件等。

在使用jq时,我们经常用到一些常用方法,那么接下来,我们就来一一讲解。

1. 选择器在jq中,选择器是最为基本的部分,它可以让我们快速地筛选元素,比如:- $("#id"):根据id选择元素。

- $(".class"):根据class选择元素。

- $("tag"):根据标签名选择元素。

- $("element").find(selector):在指定元素中查找符合条件的元素。

2. 事件绑定在jq中,我们可以通过事件绑定来实现在指定元素上触发事件。

常用的事件有:- $(selector).click(function(){}):点击元素触发事件。

- $(selector).mouseover(function(){}):鼠标移上元素触发事件。

- $(selector).submit(function(){}):表单提交触发事件。

- $(selector).focus(function(){}):元素获得焦点触发事件。

3. DOM操作在jq中,我们可以通过一些方法来快速地操作DOM元素,比如:- $(selector).html():获取或设置元素的HTML内容。

- $(selector).text():获取或设置元素的文本内容。

- $(selector).attr():获取或设置元素的属性。

- $(selector).addClass():为元素添加class。

- $(selector).remove():删除指定元素。

4. 动画效果在jq中,我们可以通过动态效果来增加网页的交互性,比如:- $(selector).show(speed,callback):显示元素,可以设置速度和回调函数。

jQuery与vue的区别是什么?

jQuery与vue的区别是什么?

jQuery与vue的区别是什么?jQuery与vue的区别是什么?下⾯本篇⽂章就来给⼤家介绍⼀下,让⼤家了解jquery和vue.js之间有哪些区别。

有⼀定的参考价值,有需要的朋友可以参考⼀下,希望对你们有所帮助。

jquery与vue的对⽐JQuery:jQuery是使⽤选择器($)选取DOM对象,对其进⾏赋值、取值、事件绑定等操作,其实和原⽣的HTML的区别只在于可以更⽅便的选取和操作DOM对象,⽽数据和界⾯是在⼀起的。

⽐如需要获取label标签的内容:$("lable").val();,它还是依赖DOM元素的值。

只是对原⽣JS的API选择器等等进⾏了封装,便于操作DOM,本质还是操作DOM实现逻辑,数据和界⾯还是连接在⼀起的。

适⽤于需要操作DOM的业务:动画,交互效果,页⾯特效。

Vue.js:Vue则是通过Vue对象将数据和View完全分离开来了。

对数据进⾏操作不再需要引⽤相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。

这就是传说中的MVVM。

MVVM模型,将数据层和视图层完全分离开,不仅对API进⾏封装,还提供了⼀系列的解决⽅案。

这是⼀个思想的转变。

数据驱动的机制,主要操作的是数据⽽不是频繁操作DOM(导致页⾯频繁重绘)。

适⽤的业务:数据相关的处理以及操作。

jquery与vue的区别1、⼯作原理Vue做到了数据和视图完全分离开,它⾸先把值和js对象进⾏绑定,然后修改js对象的值,Vue框架就会⾃动把dom的值就⾏更新。

对数据进⾏操作不再需要引⽤相应的dom对象,他们通过Vue对象实现数据和视图的相互绑定。

jQuery则是要先使⽤选择器($)来选取dom对象,然后对dom对象进⾏操作(如赋值、取值、事件绑定等)。

2、侧重vue侧重数据绑定,可以应⽤于复杂数据操作的后台页⾯。

如:表单填写页⾯jquery侧重样式操作,动画效果等;可以应⽤于⼀些html5的动画页⾯,⼀些需要js来操作页⾯样式的页⾯中。

菜鸟教程jquery语法

菜鸟教程jquery语法

菜鸟教程jquery语法jQuery是一种高效、简洁又方便的JavaScript库,它简化了HTML文档的操作、事件处理、动画设计以及AJAX交互等操作,为前端开发者提供了非常方便的编程工具。

本篇文章将为大家简单介绍jQuery的语法和用法,包括选择器、事件、动画和AJAX交互等常用功能。

1. jQuery选择器选择器是jQuery的核心功能之一,它允许我们通过CSS样式来获取文档中的HTML元素。

以下是一些常见选择器:- 元素选择器$('p'):获取所有的p元素$('#header'):获取id为header的元素$('.nav'):获取class为nav的元素jQuery中的事件和原生JavaScript的事件类似,但是它的处理方式更为方便和高效。

以下是一些常用的事件处理方法:- click():点击事件$('button').click(function(){//执行操作});- hover():鼠标悬停事件jQuery提供了一些强大的动画效果,比如淡入淡出、滑动等。

以下是一些常用的动画效果:- fadeIn():淡入效果$('div').fadeIn();- slideUp():上滑效果4. jQuery AJAX交互jQuery AJAX可以实现页面的异步交互,比如发送请求、接收数据等。

以下是一些常用的AJAX方法:- $.ajax():发送和接收请求的函数$.ajax({type: 'post',url: 'test.php',data: {'name': '小明','age': 18},success: function(data){console.log(data);}});总结本文对jQuery的语法和用法进行了简单介绍,包括选择器、事件、动画和AJAX交互等常用功能。

jQuery中选择器的基础使用教程

jQuery中选择器的基础使用教程

jQuery的选择器非常强大,使你可以轻松选取页面中任何一个对象,下面我们就主要针对DOM操作来看一下jQuery中选择器的基础使用教程,需要的朋友可以参考下其实选择器就像开罐器一样,会用这个工具的人,自然吃的到甜头,但不会用这个工具的人,不管罐头里面的面筋土豆有多美味,吃不到就是吃不到,就如同jquery再怎么强大,也只能看着荧幕,而不知该如何下手,不过虽然选择器不难,也容易上手,但老实说,我用了一年多下来,还是觉得自己只有用皮毛而已,所以希望藉着这一系列的笔记,让自己能更长进一些DOM怎么吃DOM可以说是JavaScript与网页之间的联系管道,他提供了一个模型,让JavaScript 能藉由此模型来改变或操作整个网页,&lt;div class="one"&gt;&nbsp; &lt;p&gt;two_1&lt;/p&gt;&nbsp; &lt;p&gt;two_2&lt;/p&gt;&nbsp; &lt;p&gt;two_2&lt;/p&gt;&lt;/div&gt;我这边就简单介绍一下DOM模型,有个元素class名为one的是父元素,底下有三个儿子元素&lt;p&gt;,每个元素都视为一个节点,也可以看成一个树形图,因为我认为有些东西是Google会讲得比我好,所以还想知道更多纠结的父子关系...,可以去这,那边有很好的说明,这边就不多加解释,而当Jquery利用选择器抓取到DOM元素以后,就会将他包装成一个Jquery object,并且回传$('#MyDiv')&lt;-- 他是一个物件这里有个观念十分重要,因为许多初学者,甚至是一些从Jquery开始学起Javascript的开发者(包括我),常常会把以下两个程序码搞混在一起//原生JavaScript取id为a的divvar result1 = document.getElementById('a');console.log(result1);//用jquery取id为a的divvar result2=$('#a');console.log(result2);如果你执行这段程序码出来,妳会发现console出来的结果,用JavaScript取出来的结果是DOM,可是一样的div用Jquery取出来的却是个包装过后的物件,换句话说,你不能直接对包装过后的Jquery物件增加DOM的事件,而是要用Jquery提供的事件,有人会说,那意思是不是说以后只能河水不犯井水,往后互不干涉,从此分道扬镳呢? 到也不是var b=$('#a')[0];只要跟上述程序码一样就可以取得DOM的元素了$()工厂不管是如何选择,我们都会用相同的函式$(),就如之前所讲的,他能接受CSS选择器的语法做为参数,而最主要的三个参数分别为tag name、ID与class,当然,这三个参数可以再与其他CSS语法做结合//tag name$('div')//ID$('#myId')//class$('.myClass')而上述函式都会如同第一章所介绍的,都有隐式迭代的特色,而为了做到跨览器的支援,Jquery的选择器包含了CSS1-3,所以不用担心一些比较特别的浏览器(对就是IE6)不能执行,除非addClass('color1');//替index为1的tr加上class$('tr:nth-child(1)').addClass('color2');这里很特别的是,为什么都是替index为1的tr加上class,却是不同的结果呢?,因为:eq()算是一个JavaScript阵列,index是0起始,所以才会选到第二个,而nth-child()是CSS选择器的一种,所以index是以1起始,选到的就是第一个,以下的范例意思相同/3PrJt///选择偶数的tr增加class$('tr:even').addClass('color1');//选择偶数的tr增加class$('tr:nth-child(even)').addClass('color2');就如同刚刚所讲的,index起始不同(JavaScript起始为0,CSS为1),所以虽然都是取偶数,但却是不同列再来就一些FORM常用的选择器/qcXSy/3/$(':button').click(function(){&nbsp; &nbsp; alert('a');});这就代表说绑定所有的bitton一个click事件,其他还有像:input、:button、:enabled、:disabled都可以跟其他选择器一起组合成新的选择器更加强大的.filter()当有时候一般的选择器已经不能不能满足我们复杂的DOM时,例如要抓div的爸爸的哥哥的儿子的妹婿的二姑的大舅时...,这时候还可以用一个方法filter,这个方法特别的地方在于他可以带function进去/wGz3k/可以看到function里面限制return index == 1才可以增加CSS,这个好处就在于可以在里面做很多复杂的逻辑运算当然Jquery还有太多太多选择器可以使用,像还有.next()、.parent()、.children()一般常用的这几个,其实就很够用了我认为,再多的选择器有时候好像只是展示不同的写法,但其实只要能抓取到你想要的元素,解决问题你甚至想要这样写$('div').children().children().children().children().children()也不会有人说不行..实例一个网站中有10种的文章分类,我们设计一个类似WordPress显示各文章分类的名称及其文章数量的栏目,当用户进入一个页面时,默认显示前面5个分类的名称以及最后一个分类——其他分类,用户可以通过单击“显示全部分类”按钮来显示全部分类,同时一些推荐的分类会加下划线显示,按钮中的文字会改变为“显示部分分类”,再次单击“显示部分分类”后会回到之前的页面状态。

jquery实现原理

jquery实现原理

jquery实现原理
jQuery是一个JavaScript库,它的实现原理主要包括以下几个
方面:
1. DOM操作:jQuery通过封装了一系列的DOM操作方法,
使得通过简洁的语法可以轻松地操作HTML文档中的元素。

jQuery通过封装了常用的DOM操作函数,使得开发者可以快
速地选择元素、修改元素的属性、样式、内容等。

2. 事件处理:jQuery提供了统一的事件处理函数,可以通过选择器选择元素,并给元素绑定事件。

当事件触发时,可以执行相应的回调函数。

它解决了不同浏览器之间的兼容性问题,并且还实现了事件的冒泡和委托。

3. AJAX封装:jQuery封装了XMLHttpRequest对象,提供了
一系列的AJAX方法,可以通过简单的方式实现异步加载数据。

它通过XMLHttpRequest对象发送请求,并处理服务器返
回的数据。

4. 动画效果:jQuery提供了强大的动画效果的支持,可以轻松地实现元素的淡入淡出、滑动、展开收起等效果。

它通过修改元素的CSS属性值来实现动画效果的改变。

5. 工具函数:jQuery还提供了丰富的工具函数,包括类型判断、字符串处理、数组操作等,方便开发者进行常用的操作。

以上就是jQuery的简单实现原理。

它通过封装常用的操作和
方法,提供了简洁的语法和接口,使得开发者可以更加高效地进行DOM操作、事件处理、异步请求和动画效果的实现。

jQuery相关知识总结

jQuery相关知识总结

1总体概述以后项目如果没有特殊情况,一般采用jQuery作为最基础的公共底层库。

另外对于前端的javascript相关的知识还是需要有所了解,可以加深对框架的理解2jQuery相关知识点介绍以下功能方面的描述都是基于jQuery1.8.02.1浏览器类型的判断早版本的jQuery提供jQuery.browser,jQuery.browser.version这两个特性来判断浏览器的类型和版本,但是从jQuery1.9开始这两个特性被移出,如果项目需要移植到高版本jQuery(1.9+),可以使用插件jquery-migrate。

废弃的主要原因是它基于erAgent[声明了浏览器用于HTTP 请求的用户代理头的值]来判断用户的浏览器类型等信息,但是这个信息并不准确,容易被伪造欺骗。

可以使用属性jQuery.support,即浏览器支持的html或者css特性来进行相关的判断,但更加推荐使用第三方的类库Modernizr来替代jQuery.support2.2jQuery选择器主要参考资料<jQuery设计思想>所有jQuery选择器选择出来的都是jQuery对象。

2.2.1jQuery对象是什么一个jQuery对象类似一个数组,它里面包含很多dom对象,一个jQuery对象中具体包含多少dom对象依赖于你的选择器。

jQuery对象中的这些dom对象也通常称为被选择的元素或者匹配的元素。

2.2.2常见的一些jQuery选择器选择器实例选取*$("*") 所有元素#id$("#lastname") id="lastname" 的元素.class$(".intro") 所有class="intro" 的元素element$("p") 所有<p> 元素.class.class$(".intro.demo") 所有class="intro" 且class="demo" 的元素:first$("p:first") 第一个<p> 元素:last$("p:last") 最后一个<p> 元素:even$("tr:even") 所有偶数<tr> 元素:odd$("tr:odd") 所有奇数<tr> 元素:eq(index)$("ul li:eq(3)") 列表中的第四个元素(index 从0 开始):gt(no)$("ul li:gt(3)") 列出index 大于3 的元素:lt(no)$("ul li:lt(3)") 列出index 小于3 的元素:not(selector) $("input:not(:empty)") 所有不为空的input 元素:header$(":header") 所有标题元素<h1> - <h6>:animated所有动画元素:contains(text)$(":contains('W3School')") 包含指定字符串的所有元素:empty$(":empty") 无子(元素)节点的所有元素:hidden $("p:hidden") 所有隐藏的<p> 元素:visible$("table:visible") 所有可见的表格s1,s2,s3 $("th,td,.intro") 所有带有匹配选择的元素[attribute]$("[href]") 所有带有href 属性的元素[attribute=value]$("[href='#']") 所有href 属性的值等于"#" 的元素[attribute!=value]$("[href!='#']") 所有href 属性的值不等于"#" 的元素[attribute$=value]$("[href$='.jpg']") 所有href 属性的值包含以".jpg" 结尾的元素:input$(":input") 所有<input> 元素:text$(":text") 所有type="text" 的<input> 元素:password$(":password") 所有type="password" 的<input> 元素:radio$(":radio") 所有type="radio" 的<input> 元素:checkbox$(":checkbox") 所有type="checkbox" 的<input> 元素:submit$(":submit") 所有type="submit" 的<input> 元素:reset$(":reset") 所有type="reset" 的<input> 元素:button$(":button") 所有type="button" 的<input> 元素:image$(":image") 所有type="image" 的<input> 元素:file$(":file") 所有type="file" 的<input> 元素:enabled$(":enabled") 所有激活的input 元素:disabled$(":disabled") 所有禁用的input 元素:selected$(":selected") 所有被选取的input 元素:checked$(":checked") 所有被选中的input 元素2.2.3dom对象和jQuery对象之间的转换jQuery对象中获取第一个dom对象$("selector")[0] === $("selector").get(0)将dom对象转换为jQuery对象var fooDom = document.getElementById("foo");$(fooDom);2.2.4如何判断jQuery对象是否为空if ($( "#myDiv" ).length) {$("#myDiv").show();}当然有时候也并不需要判断一个jQuery对象是否为空$( "#myDiv" ).show();当有id为myDiv的元素就显示,没有的时候什么也不做,也不会出现错误2.3常见的jQuery的一些方法2.3.1工具类方法2.3.2改变结果集的方法jQuery提供各种强大的过滤器,对结果集进行筛选,缩小选择结果。

jquery CSS和xpath选择器

jquery CSS和xpath选择器

jQuery具有一个相当强大的选择器引擎,提供了完整的选择器语法,允许我们选择几乎所有的元素组合。

jQuery 的选择器语法主要是基于 CSS3 和 XPath 的,对 CSS3 和 XPath 了解越多,使用 jQuery 时就越显得心应手。

有关 CSS 和XPath,请参阅以下链接:∙CSS 1∙CSS 2∙CSS 3∙xPath值得注意的是, CSS3 并没有得到现今所有浏览器的支持,因此我们很少使用它。

然而,我们仍然可以在 jQuery 中使用 CSS3 选择元素,因为 jQuery 具备自己的自定义选择器引擎,并且实现了对 CSS3 的支持。

想了解 jQuery 选择器更多信息,可以访问 jQuery 的官方文档有关 Selector 的部分。

下面,在原官方文档的基础上作一些简单的翻译和说明。

1. CSS 选择器(CSS Selectors)jQuery 完整地支持 CSS 1-3,并且可以在(选择器)表达式里加入自定义的CSS-like (和xPath)。

1.1 jQuery 支持的 CSS 选择器语法∙*任何 element∙E类型为 E 的所有element(其实 E 可以是任何 element)∙E:nth-child(n)一个类型为 E 的 element,它是其父 element 的第 n 个子 element∙E:first-child一个类型为 E 的 element,它是其父 element 的第一个子 element(相当于E:nth-child(0))∙E:last-child一个类型为 E 的 element,它是其父 element 的最后一个子 element∙E:only-child一个类型为 E 的 element,它是其父 element 的唯一子element∙E:empty一个类型为 E 的用户界面(UI) element,它没有子 element (包括文本 element)∙E:enabled一个类型为 E 的用户界面(UI) element,它被设置为禁止(disabled)∙E:disabled一个类型为 E 的用户界面(UI) element,它被设置为允许(enabled)∙E:checked一个类型为 E 的用户界面(UI) element,它处于选中(checked)状态(适用于单选按钮和复选框)∙E:selected一个类型为 E 的用户界面(UI) element,它处于被选择(selected)状态(在选择范围内,有一个或多个可供选择的 element )。

jqeury方法笔记

jqeury方法笔记

jqeury方法笔记
一、简介与背景
随着Web前端技术的不断发展,JavaScript库的应用变得越来越普及。

其中,jQuery作为一个功能丰富、易于使用的库,受到了许多开发者的喜爱。

本文将对jQuery方法进行详细的梳理和总结,以帮助读者更好地理解和应用jQuery。

二、jQuery方法概述
1.选择器
jQuery提供了一系列强大的选择器,可以方便地选取页面中的元素。

如:$("selector")、$(".class")、$("[attribute]")等。

2.动画与特效
jQuery内置了许多动画效果,如fadeIn、fadeOut、slideUp、slideDown等。

通过这些动画效果,可以轻松地为网页元素添加动态展示。

3.事件处理
jQuery提供了便捷的事件处理方法,如绑定事件、冒泡和捕获等。

可以使用如:$(selector).on("event", function())等方法进行事件处理。

4.异步编程
jQuery支持异步编程,如AJAX请求。

使用$.ajax()方法可以方便地发起GET、POST等类型的请求,实现与服务器的数据交互。

5.实用工具
jQuery还提供了一些实用工具,如$.each()、$.map()、$.parseHTML()
等,便于开发者进行复杂的DOM操作和数据处理。

浅谈jQuery选择器

浅谈jQuery选择器

K y od: ur; l tr fc ny ew rsQ e S e o;i i c j y ee E e
随着 Wb . e20的兴起 ,人 们对 富因特 网应用 和 A a jx技术重 新 燃 起兴趣 ,Jv Sr p a ac it越 来越 受到重 视 ,很 多 以 J vS rp aa ci t为 基 础 的类 库 已经渐渐 成为程 序 员手 中的利器 。 Q ey以其优雅 的 ju r 编 程方 式 ,独特 的姿 态 ,受到越 来越 多 的人 的关注 。 可 以看 出来 使用 i ,相 当于直接 调用 d cmn . tlmn d ou e tgeE e e ty d( Bl )取得 元素 ,速 度会 非常 快 。但是 ,我们 需要 的选择 器通 常会 比这 复杂很 多 ,比如想选 择 i 为 “ ”下 的 c as “ ”的 d a ls 为 b 所有 元素 。 以这 样 写¥ # . ” ) 者¥ # ” )fn (“ b 可 (“ ab 或 (“ a . id . ”) 这两 种方法 的执 行结果 是一 样的 , 比如 < i d a < ls= dvi=“ ”>aca s “ ”>/ >/ i> b <a <dv ,返 回的都 是< ls=“ ”> /> aca s b <a ,但 是执行 效率 是不 同的 。 通过 上面 的代 码可 以看 出来如果 不是 i 形 式的选 d 择器 ,那 么就执 行 f n 方法 了 。fn id id方法 如下 :
h de a m o b d v l p r e e eo ng t lif ci n . a ft fm la S. t ei a p ae fW e e eo e swh n d v lpi e mu t-u to sBy m e nso a iir CS X HTM L d t o m o h he n a he c m n

第2章 jQuery基础选择器

第2章  jQuery基础选择器

练习题
一、单选题
1.下面有一段代码,其中只能获取第2个div元素的是(
<!Dቤተ መጻሕፍቲ ባይዱCTYPE html> <html> <head>
<meta charset="utf-8" /> <title></title> </head> <body> <div id="first"></div> <div></div> <div></div> </body> </html>
第二章 基础选择器
教学重点
➢ 掌握4种基础选择器
2.1 jQuery选择器简介
• jQuery选择器跟CSS选择器几乎完全一样,我们在接下来的学习中应该 多对比一下,这样学习速度可以快很多。
2.2 基本选择器
• 所谓的基本选择器,指的是在实际开发中使用频率最高的选择器。其中, 基本选择有以下4种。
二、编程题 1. 请写出下面对应的jQuery选择器,每一项对应一个。 (1)选取含有href属性的a元素。 (2)选取type取值为radio的input元素。 (3)选取type取值不是checkbox的input元素。 (4)选取class属性包含nav的div元素(class属性可以包含多个值)。 (5)选取class属性以article开头的div元素,例如<div class="article-title"></div>。 (6)选取class属性以content结尾的div元素,例如<div class="article-content"></div>。 (7)选取带有id属性并且class属性是以article开头的div元素,例如<div id="container" class="article-title"></div>。

第3章 常规选择器

第3章 常规选择器

$('div').css('color', 'red'); $('#box').css('color', 'red'); $('.box').css('color', 'red');
为了证明 ID 返回的是单个元素,而元素标签名和类(class)返回的是多个,我们可以采 用 jQuery 核心自带的一个属性 length 或 size()方法来查看返回的元素个数。
二.进阶选择器
在简单选择器中,我们了解了最基本的三种选择器:元素标签名、ID 和类(class)。那么 在基础选择器外,还有一些进阶和高级的选择器方便我们更精准的选择元素。 选择器 群组选择器 后代选择器 通配选择器 CSS 模式 span,em,.box {} ul li a {} * {} jQuery 模式 $('span,em,.box') $('ul li a') $('*') 描述 获取多个选择器的 DOM 对象 获取追溯到的多个 DOM 对象 获取所有元素标签的 DOM 对象
jQuery 选择器支持 CSS1、CSS2 的全部规则,支持 CSS3 部分实用的规则,同时它还有 少量独有的规则。所以,对于已经掌握 CSS 的开发人员,学习 jQuery 选择器几乎是零成本。 而 jQuery 选择器在获取节点对象的时候不但简单, 还内置了容错功能, 这样避免像 JavaScript 那样每次对节点的获取需要进行有效判断。 $('#pox').css('color', 'red'); //不存在 ID 为 pox 的元素,也不报错 document.getElementById('pox').style.color = 'red'; //报错了 因为 jQuery 内部进行了判断,而原生的 DOM 节点获取方法并没有进行判断,所以导 致了一个错误,原生方法可以这么判断解决这个问题: if (document.getElementById('pox')) { //先判断是否存在这个对象 document.getElementById('pox').style.color = 'red'; } js 基础:关于 Boolean() 与 if 数据类型 Boolean String Number Object Undefined

jQuery开发技术笔记

jQuery开发技术笔记

jQuery开发技术笔记HTML DOM 加载步骤1、解析 HTML 结构2、加载外部脚本和样式表⽂件3、解析并执⾏脚本代码4、构造 HTML DOM 模型5、加载图⽚等外部⽂件6、页⾯加载⼀、总体架构1.1:jQuery 的核⼼特征:兼容主流浏览器:⽀持 IE 6.0+、Chrome、Firefox 3.6+、Safari 5.0+、Opera等。

具有的特的链式语法和短⼩清晰的多功能接⼝。

具有⾼效灵活的 CSS 选择器,并且可对 CSS 选择器进⾏扩展。

拥有便捷的插件扩展机制和丰富的插件。

1.2:总体架构jQuery 的模块可以分为 3 个部分:⼊⼝模块、底层模块、功能模块。

在底层⽀持模块中,回调函数列表模块⽤于增强对回调函数的管理,⽀持添加、移除、触发、锁定、禁⽤回调函数等功能;异步队列模块⽤于解耦异步任务和回调函数,它在回调函数刘表的基础上为回调函数增加了状态,并提供了多个回调函数列表,⽀持传播任意同步或异步回调函数的成功或失败状态;数据缓存模块⽤于为 DOM 元素和 JavaScript 对象附加任意类型的数据;队列模块⽤于管理⼀组函数,⽀持函数的⼊队和出队操作,并确保函数按顺序执⾏,它基于数据缓存模块实现。

在功能模块中,事件系统提供了统⼀的时间绑定、响应、⼿动触发和移除机制,它并没有将事件直接绑定到 DOM 元素上,⽽是基于数据缓存模块来管理事件;ajax 模块允许从服务器上加载数据,⽽不⽤刷新页⾯,它基于异步队列模块来管理和触发回调函数;动画模块⽤于向⽹页中添加动画效果,它基于队列模块来管理和执⾏动画函数;属性操作模块⽤于对 HTML 属性和 DOM 属性惊醒读取、设置和移除操作;DOM 遍历模块⽤于在 DOM 树中遍历⽗元素、⼦元素和兄弟元素;DOM 操作模块⽤于插⼊、移除、复制和替换 DOM元素;样式操作模块⽤于获取计算样式或设置内联样式;坐标模块⽤于读取或设置 DOM 元素的⽂档坐标;尺⼨模块⽤于获取 DOM 元素的⾼度和宽度。

JQ选择器

JQ选择器

一·通过一个简单的例子,简单区分下jQuery对象与DOM对象:我们要获取页面上这个id为imooc的div元素,然后给这个文本节点增加一段文字:“您好!通过慕课网学习jQuery才是最佳的途径”,并且让文字颜色变成红色。

普通处理,通过标准JavaScript处理:通过原生DOM模型提供的document.getElementById(“imooc”) 方法获取的DOM元素就是一个DOM对象,再通过innerHTML与style属性处理文本与颜色。

jQuery的处理:通过$('#imooc')方法会得到一个$p的jQuery对象,$p是一个类数组对象。

这个对象里面包含了DOM对象的信息,然后封装了很多操作方法,调用自己的方法html与css,得到的效果与标准的JavaScript处理结果是一致的。

二·利用数组下标的方式读取到jQuery中的DOM对象HTML代码JavaScript代码用jQuery找到所有的div元素(3个),因为jQuery对象也是一个数组结构,可以通过数组下标索引找到第一个div元素,通过返回的div对象,调用它的style属性修改第一个div元素的颜色。

这里需要注意的一点是,数组的索引是从0开始的,也就是第一个元素下标是0通过jQuery自带的get()方法jQuery对象自身提供一个.get() 方法允许我们直接访问jQuery对象中相关的DOM节点,get方法中提供一个元素的索引:其实我们翻开源码,看看就知道了,get方法就是利用的第一种方式处理的,只是包装成一个get让开发者更直接方便的使用。

三·通过$(dom)方法将普通的dom对象加工成jQuery对象之后,我们就可以调用jQuery的方法了HTML代码JavaScript代码通过getElementsByTagName获取到所有div节点的元素,结果是一个dom合集对象,不过这个对象是一个数组合集(3个div元素)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jQuery选择器的工作原理和优化
至于有那些选择器,在帮助手册中都有,自己去看,这篇主要是分析他的工作原理,而优化我们写的选择器,尤其在页面内容很多的情况下,更应该需要优化。

下边就言归正传。

每次申明一个jQuery对象的时候,返回的是
jQuery.prototype.init 对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可以实现继承,加上js的对象只是引用不会是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同,这里就不讲原因了,等下一篇再讲为什么会是这样。

当我们使用选择器的时候$(selector,content),就会执行
init(selectot,content),我们看看inti中是怎样执行的:
if ( typeof selector == "string" ) {
//正则匹配,看是不是HTML代码或者是#id
var match = quickExpr.exec( selector );
//没有作为待查找的 DOM 元素集、文档或 jQuery 对象。

//selector是#id的形式
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
//HTML代码,调用clean补全HTML
代码
if ( match[1] ){
selector =
jQuery.clean( [ match[1] ], context );
}
// 是: $("#id")
else {
//判断id的Dom是不是加载完成
var elem =
document.getElementById( match[3] );
if ( elem ){
if ( elem.id != match[3] )
return jQuery().find( selector );
return
jQuery( elem );//执行完毕return
}
selector = [];
}
//非id的形式.在context中或者是全文查找
} else{
return
jQuery( context ).find( selector );
}
}
这里就说明只有选择器写成$(‘#id’)的时候最快,相当于执行了一次 getElementById,后边的程序就不用再执行了。

当然往往我们需要的选择器并不是这么简单,比如我们需要id下的CSS为className,有这样的写法$(‘#id.className’)和
$(‘#id’).find(‘.className’);这两种写法的执行结果都是一样的,比如<div id=”id”><span
class=”className”></span></div>,返回的肯定都是<span class=”className”></span>,但是执行的效率是完全不一样的。

在分析一下上边的代码,如果不是$(‘#id’)这样的简单选择器的话,都会执行find函数,那我们再看看find到底是做用的:
find: function( selector ) {
//在当前的对象中查找
var elems = jQuery.map(this, function(elem){
return jQuery.find( selector, elem );
});
//下边的代码可以忽略,只是做一些处理
//这里应用了js的正则对象的静态方法test
//indexOf("..")需要了解一下xpath的语法,就是判断selector中包含父节点的写法
//本意就是过滤数组的重复元素
return this.pushStack( /[^+>]
[^+>]/.test( selector ) || selector.indexOf("..") > -1 ?
jQuery.unique( elems ) :
elems );
}
如果这样写$(‘#id .className’),就会执行到扩展的
find(‘#id .className’,document),因为当前的this是document 的jQuery数组,那我们在看看扩展的find他的实现,代码比较多,就不列出来,总之就是从第二个参数传递进行的dom第一个子节点开始找,遇见#比对id,遇见.比对ClassName,还有:<+-等处理。

那我们要优化,是不是就要想办法让第二个参数context的范围最小,那样遍历是不是就很少了?
如果我们这样写$(‘#id’).find(‘.className’),那程序只这样执行的,第一次init的时候执行一步getElementById,就return了,接着执行find(‘.className’,divDocument),divDocument就是我们第一次选择的是div标签,如果document下有很多dom对象的时候,这次只遍历divDocument是不是少了很多次,而且在第一次选择id的速度也要比遍历快的多。

现在大家应该是明白了吧。

就是说第一层选择最好是ID,而是简单选择器,目的就是定义范围,提高速度,这次就说这些,选择写法的优化,其他的优化,下次再说。

相关文档
最新文档