选择器:是js的核心。jQuery选择器返回值的为一个数组。
基本语法
语法 | 说明 |
---|---|
$("#myELement") | 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 |
$("div") | 选择所有的div标签元素,返回div元素数组 |
$(".myClass") | 选择使用myClass类的css的所有元素 |
$("*") | 选择文档中的所有的元素 |
层叠(级)选择器
语法 | 说明 |
---|---|
$("parent child") | 选择所有的parent元素中的child元素 。选择某个父级下的子级(所有)可以为多级 |
$("#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元素。这个选择的是span,(未被选中的元素的下一个) |
$("tr:even") | 选择所有的tr元素的第0,2,4... ...个元素(注意:因为所选择的多个元素时为数组,所以序号是从0开始) |
$("tr:odd") | 选择所有的tr元素的第1,3,5... ...个元素 |
$("td:eq(2)") | 选择所有的td元素中序号为2的那个td元素 ,eq(A)中的A可以传入变量如索引值 |
$("td:gt(4)") | 选择td元素中序号从0开始计数大于4的所有td元素,传参为负数后往前找(版本1.8之前是不支持负数的),-2选的是倒数第1个,递减 |
$("td:lt(4)") | 选择td元素中序号小于4不含4的所有的td元素 |
$(":header") | 选择所有标题元素,像h1, h2, h3 等 |
$("div:animated") | 选择所有正在执行动画效果的元素 |
$(':focus') | 选择当前获取焦点的元素。 |
$('span:first-of-type') | 查找所有标签下的第一个span |
$(':first-child') | 找到所有标签的第一个子元素。如果在:的前面写一个指定标签,那么不一定能够获取的到 |
$('span:first') | 查找所有span中的第一个span |
内容过滤选择器
语法 | 说明 |
---|---|
$("div:contains('John')") | 选择所有div中含有John文本的元素 $("标签名:contains('标签内的内容')") |
$("td:empty") | 选择所有的为空(也不包括文本节点)的td元素的数组 |
$("div:has(p)") | 选择所有含有p标签的div元素 |
$("td:parent") | 选择所有的以td为父节点的元素数组 |
可视化过滤选择器
语法 | 说明 |
---|---|
$("div:hidden") | 选择所有的被hidden的div元素 |
$("div:visible") | 选择所有的可视化的div元素 |
属性过滤选择器。可以使用多个属性进行联合选择
语法 | 说明 |
---|---|
$("div[id]") | 选择所有含有id属性的div元素 |
$('input:file') | 找到属性为file的input |
$('input:disabled') | 选择input中属性为disabled的元素。 |
$("input[name='newsletter']") | 选择所有的name属性等于'newsletter'的input元素 |
$("input[name!='newsletter']") | 选择所有的name属性不等于'newsletter'的input元素 |
$( "input[miaov|='aaa']") | 选择指定属性值等于aaa或以aaa为前缀(该aaa后跟一个连字符“-” )的元素 |
$("input[name^='news']") | 选择所有的name属性以'news'开头的input元素 |
$("input[name$='news']") | 选择所有的name属性以'news'结尾的input元素 |
$("input[name*='man']") | 选择所有的name属性包含'news'的input元素 |
$[attribute~='value'] | 选择input中属性名为value并且两边有空格的所有元素(包括只有属性值的,如果value开头前面也属于空格) |
$("input[id][name$='man']") | 可以使用多个属性进行联合选择,该选择器是得到所有的含有id属性并且那么属性以man结尾的元素 |
子元素过滤选择器
语法 | 说明 |
---|---|
$(':first-child') | 找到所有标签的第一个子元素。 $("div span:first-child") 返回所有的div元素的第一个子节点的数组 |
$(':first-child') | 找到所有标签的最后一个子元素。 $("div span:last-child") 返回所有的div元素的最后一个节点的数组 |
$("div button:only-child") | 返回所有的div中只有唯一一个子节点的所有子节点的数组 |
$("ul li:nth-child(2)") | ul下标为2的li元素 |
$("ul li:nth-child(odd)") | 偶数 |
$("ul li:nth-child(3n + 1)") |
表单元素选择器
语法 | 说明 |
---|---|
$(":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的元素 |
$(”input[@ name =xxx]“).parent().prev().text() | 选取一个 name 为"xxx"的input text框的上一个td的text值 |
$(”input[@ name ^='S_']“).not(”[@ name $='_R']“) | 名字以”S_”开始,并且不是以”_R”结尾的 |
$(”input[@ name =radio_01][@checked]“).val(); | 一个名为 radio_01的radio所选的值 |
使用例子
HTML 代码:
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />
语法 | 说明 |
---|---|
$("A B") | 查找A元素下面的所有子节点,包括非直接子节点。例子:找到表单中所有的 input 元素 jQuery 代码: $("form input") 结果: [ <input name="name" />, <input name="newsletter" /> ] |
$("A>B") | 查找A元素下面的直接子节点。 例子:匹配表单中所有的子级input元素。jQuery 代码: $("form > input") 结果: [ <input name="name" /> ] |
$("A+B") | 查找A元素后面的兄弟节点,包括非直接子节点。 例子:匹配所有跟在 label 后面的 input 元素 jQuery 代码:$("label + input") 结果:[ <input name="name" />, <input name="newsletter" /> ] |
$("A~B") | 查找A元素后面的兄弟节点,不包括非直接子节点。 例子:找到所有与表单同辈的 input 元素 jQuery 代码: $("form ~ input") 结果: [ <input name="none" /> ] |
方法总结
语法 | 说明 |
---|---|
$('li').slice(1,3) | 选择指定范围的元素。第一个参数:起始位置。第二个参数:结束的位置(但不包括结束位置)。 |
$('li').first() | li集合中的第一个li |
$('li').last() | li集合中的倒数第一个li |
$('ul').children() | ul下的子元素。选择的只是一级 |
$('ul').find('li') | ul下的li子元素选择父元素下的所有。与$('ulli')功能差不多是从右往左查找的,所有从性能的角度来说,效率并不高。而使用$('ul').find('li')的时候是根据某个元素下的某些元素去查找的(类似于我们通过某个元素下去getElementsByTagName()。建议使用find的方式去获取一些复杂的元素。 |
$('p').parent() | 选择当前p元素的父级。 |
$('p').parents() | 选择当前元素的所有祖先级节点。 |
$('p').closest('.box') | 找的是最近的唯一一个父级元素(不过也包含自身) |
$('.box').append(oDiv) | 往某个父级元素内的后面添加一个元素 oDiv.appendTo('.box') 区别是改变了this |
$('.box').prepend(oDiv) | 往某个父级元素里的首位添加一个元素 prependTo() |
$('.box').before(oDiv) | 往某个元素的前面添加一个元素 insertBefore() |
$('.box').after(oDiv) | 往某个元素的后面添加一个元素 insertAfter() |
append/appendTo区别 | (其他几个,比如:before/insertBefore) append 如果在之后还要去操作元素,那么这个时候的this为.box appendTo 如果在之后还要去操作元素,那么这个时候的this为要添加的元素 |
$('#div1').remove() | 要删除的元素.remove() |
oLi.clone() | 克隆元素,如要复制还需要再append,默认的情况下,不能clone事件,如果在()内传入true,会将克隆对象的事件给克隆出来。 |
$('div span').index() | 返回的值为div下的第一个span的下标 1.index的返回值,为兄弟中的排行(数值会随着位置的改变而变化)2.在使用index()的时候,在括号中应当,把要查找的索引元素具体化。 |
$('li').get(0).innerHTML = '' | 转原生js方法,可以获取offset等属性 get(),可以改为[]下标 |
$('li').css('width','100px') | 将li设置width为100px ,如果不写100px会只是获取到宽度,如果设置多个可以将样式设置为json格式 |
$('li').Width/height(100) | 将li设置height为100px ,不传入参数返回原来设置的高度,数值为number,不包括padding、border |
innerWidth()innerHeight(100) | 跟clientHeight/clientWidth一样,不包括边框(只包括自身的宽高+padding)在写操作的时候,注意设置的宽高为自身宽高+padding的总和,比如:padding = 10px $(obj).innerWidth(200),自身的宽度为180,因为有20像素的padding |
outerWidth() /outerHeight(100) | 自身宽高 + padding + boder 类似于offsetWidth/offsetHeight 获取宽高都能够在隐藏的时候,获取到。可视区:$(window).innerHeight() 整个文档的高度:$(document).innerHeight() |
$(window).scrollTop() | 窗口滚动条距离,已经计算过滚动条的值 |
$(obj).offset().left/top | 对象的绝对位置 |
$(obj).position().left/top | 相对于定位父级到元素的距离。如果元素值有margin值,那么这个距离是找不到的。 |
$('obj').offsetParent().attr('id') | 找定位父级(元素),可以通过attr获取属性 |
$('span').wrap('<oDiv> '); |
将span标签用div包起来,先创建div $('被包的一个对象')wrap(壳): 将某个元素包在某个标签里面。 |
$('span').wrapAll('<div> '); |
$('被包的一堆对象').wrapAll(壳) |
$('div').wrapInner('<span> ') |
$(壳).wrapInner(被包的标签);在匹配元素里的内容外包一层结构。 |
$('span').unwrap('div'); | 把包在这个对象上的壳,去掉。$('被包的一个对象').unwrap('壳'); 注意:如果壳为body是删不掉的。 |
$('#div1').html(''); | 清空div内的内容,也可以用来传参设置内容 |
$('#div1').empty(); | 清空div内的所有子节点,不可恢复 下面有对应可恢复的 |
$('#div1').detach(); | 移除#div元素,保存所有的jq数据与其关联,可以用来再次添加 var oP = $('#div1').find('p').detach(); $('#div1').append(oP); |
$('#div1').text('<b>B</b> ') |
只获取文本信息。设置:也会将原来元素中的内容覆盖,并且以字符串的方式输出到页面。 (浏览器不读标签) |
$('div').replaceWith($('p')) | 将div标签替换为p标签(如果有),但会将原来的div删除掉,相当于剪切,否则只是删除 参数是要替换的标签 |
$('p').replaceAll($('div')) | 将p标签替换为div标签(如果有),与replaceWith相同 |
$('#home').find('a').end().find('b') | 找到#home下的a和b链式操作 |
事件汇总
语法 | 说明 |
---|---|
$('#div1').on('click',function) $('#div1').click(function) | 给div1加一个点击事件,如果要同时加多个可以在'click'之后空格添加另一个触发。事件之后可以加一个自定义的属性,如"click.hhh"相当于click事件正常调用,但是解除的时候也解除可以只解除这个不改变别的click |
$('#div1').off('click'); | 解除事件绑定:如果off()的括号中传入指定的事件名,那么就是解除指定的事件绑定函数,如果不传,解除所有的事件。在某个元素下有多个事件绑定函数的时候,如果为多个事件:那么off()括号中放上要解除的事件名。单个事件:那么要在单个事件的不同事件绑定函数内设置一个“自定义”的属性,那么在解除的时候,某个事件.“自定义”属性 |
$('#div1').hover(fn1,fn2); | 将移入移出绑定到一起,如果函数调用了动画,最好在两个动画之前添加stop解决快速移入移出问题$(selector).hover(handlerIn, handlerOut)是$(selector).mouseenter(handlerIn).mouseleave(handlerOut);简写 |
$('obj').one('click',function(){alert(8)} | 对象添加一次的事件,执行之后就没有了,比如可以用来做按钮点击失效 |
Event对象 | $(document).click(function(ev){console.log(ev.pageY)} ev.clientX/ev.clientY获取的值是根据可视区宽高来决定的。可视区宽高 ev.pageX/ev.pageY 获取的值是根据整个文档宽高来决定的。文档宽高 ev.which:获取键盘值。 $(ev.target).css('background','red') 事件源操作,可以改变子元素原生的兼容ev.target || ev.srcElement |
阻止冒泡 | ①.ev.stopPropagation() 只阻止事件往上冒泡,不阻止事件本身 ②.return false 不仅阻止了事件往上冒泡,而且阻止了事件本身.阻止默认事件、阻止冒泡都可以用return false来阻止。 |
事件委托,为未来的元素添加事件 | $('ul').delegate('li','click',function(ev){alert(ev.target.innerHTML)})之后dom创建的也可以绑定到这个事件 $('ul').on('click','li',function(ev){alert(ev.target.innerHTML)}) 和delegate作业相同1.7版本jq新增 |
解除事件委托 | $('ul').delegate('#clos','click',function(ev){$(ev.delegateTarget).undelegate();}) 解除事件委托 此处ev.delegateTarget是ul $('input:button').eq(1).click(function () {$($('ul')).undelegate();} $(要解除的对象).undelegate |
trigger | 根据绑定到匹配元素的给定的事件类型执行所有的处理程序和行为 $('#div1').on('mouseover.aaa',function(){alert('1123');}); $('#div2').click(function(){$('#div1').trigger('mouseover.aaa');}) 相当于div2调用了div1的aaa属性函数 |
工具方法。既可以在$对象上使用,也可以在原生上使用。
语法 | 说明 |
---|---|
$.type() | 查看数据是什么类型的。比typeof更直观。 |
$.isFunction() | 查看数据是否为函数。如果是返回true否则返回false |
$.isNumeric(str) | 查看数据是否为数字(或是纯数字的字符串)。如果是返回true否则返回false |
$.isArray() | 是否数组 |
$.isWindow() | 是否window对象 |
$.isEmptyObject() | 查看是不是对象类型的数据:也包括null |
$. isPlainObject({}) | 查看是不是自变量({})的对象。 |
$.extend(true,'被定义的对象','要被拷贝的对象'); | 当需要深拷贝的时候,在extend()中的第一个参数加上true |
$.proxy(fn1,document)(a,b); | 函数改变this指向。也可以这样写$.proxy(fn1,window,1,2)(); |
$.parseHTML('str') | 转出来的标签为原生对象 有各种属性 |
运动
语法 | 说明 |
---|---|
显示隐藏 | $('#div1').hide('slow');隐藏 'fast' 200 / 'normal' 400 / 'slow' 600 参数对应 $('#div1').show(200); 显示 $('#div1').toggle();隐藏+显示,自带开关 toggle的这些方法,都会主动判断某个元素是否显示或隐藏,根据当前元素的属性来做运动。 |
渐变隐藏 | $('#div1').fadeOut('normal'); |
渐变显示 | $('#div1').fadeIn(5000); 5s |
滑动效果 | $('#div1').slideDown(); 下滑动 $('#div1').slideUp();上滑动 $('#div1').slideToggle(2000) 会主动判断执行上/下滑动 |
运动函数 | $('#div1').animate({width:200},{duration:500,easing:'swing',complete:function(){$('#div1').animate({height:300})},step:function(a,b){})$('obj').animate({css},speed,callback); duration:运动的时间 easing:运动的形式(swing:缓冲 linear:匀速两种) complete:运动之后的回调函数 step:运动时的细节信息参数a代表变化属性的当前值,b代表一个集合,b.pos 运动时0-1的比例。 可以据此设置一个数值随运动增加的效果 |
运动队列 | 逐行写一遍顺序执行的效果会按队列的方式执行运动或者直接用“.”连接 $('#div1').animate({width:200}).animate({height:200}); |
运动延时 | 运动与运动之前设置一个延迟执行的时间。 $('#div1').animate({width:200}).delay(1000).animate({height:200}); |
运动停止 | .stop(string,false,false) ①.停止的名称如{width:100} ②.是否取消后续的效果,默认否 ③.是否立即完成当前动画,默认否 加在动画调用之前可以用来作为一个开关 $('#div1').animate({width:1200},1000).animate({height:200}).animate({opacity:0}); 设置动画 $('input').eq(0).mouseover(function () {$('#div1').stop({width:1200},false,true)}) 取消动画 |
运动完成 | .finish(string) 提前快速执行完运动效果。传参会停止这个$('input').eq(0).mouseover(function () {$('#div1').finish({width:1200}) |
监听动画结束 | $('obj').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){ }); |