jQuery
程序员文章站
2022-03-06 10:36:15
选择器 核心 事件 文档处理 工具 属性 CSS 效果 筛选 \$('elem').each和\$.each() on 同时设置多个事件 写多个事件 off移除事件 trigger() 手动触发某类事件 事件委托 ......
jquery 是用JS写的,使用JS进行了高度封装函数 使用jQuery,就是将jQuery封装的函数学习就可以了 jquery核心理念:write less, do more 写的更好,做的更多 $() click() show()/hide() 1.7 1.8.3 1.10 1.11.3 1.12.4 // 2.0之后的版本不支持IE8浏览器 2.0 jQuery版本:3.2.1
选择器
(***)基本选择器:#id .class element div p ul (***)层级选择期:A B(后代选择器) A>B(父子选择器) A+B(相邻选择器) A~B(兄弟选择器) (***)基本筛选器::first 第一个 :last 最后一个 :even 偶数 :odd 奇数 :eq(索引) :gt(索引) 大于此索引的 :lt(索引) 小于此索引的 :animated 动画 :not(非) 内容选择器: :contains(text) 包含 :contains(汉字) //不要加引号 :empty 空 :has(selector) 包含特定的后代元素 :parent 有内容的 属性:[attr] 查找有attr属性的标签 [attr=value] 查找有attr属性,并且attr只能是value [class^="middle"] 查找有class类,并且以middle开头 [class$="middle"] 查找有class类,并且以middle结尾 [class~="middle"] 查找有class属性,并且class的多个属性中有独立的middle [class*="middle"] 查找class属性,并且class属性值中包含middle即可 [class|="middle"] 查找class属性,并且以middle和middle-开头 子元素: 父子级关系的标签 :first-child :last-child :nth-child(n) :nth-last-child(n) :only-child 获取同辈兄弟间的标签 :first-of-type :last-of-type :nth-of-type(n) :nth-last-of-type(n) :only-of-type (***)表单对象属性::checked :selected
核心
$('li').each(function(key,value){}):遍历jQuery对象 $('li').length:获取jQuery元素的个数 $('li').get(); 获取所有的li //(5) [li, li, li, li, li] $('li').get(index):获取指定索引的dom对象 //<li>开心点</li> $('.small').index():获取指定索引值 jquery对象和DOM对象区别 初学阶段:jQuery和DOM操作不要混用 jq转原生js $('li').get(0) 原生js转jq $(li);
事件
$(function(){})/$(document).ready():当页面DOM元素加载完成的时候 // 给jQuery对象绑定事件,而且可以重复绑定 $('li').click(function(){}) $('.username').keydown(function(){}) $(window).scroll(function(){}) // 移入和移出 hover(function(){},function(){}) // 绑定事件 on()/off() // 手动触发事件 trigger() // 事件属性 e.pageX/e.pageY // 阻止事件冒泡 e.stopPropagation() // 阻止默认行为 e.preventDefault()
文档处理
// 父子级追加 末尾追加 append() $('.one').append('<p>白龙马</p>'); 在.one中追加白龙马 appendTo() $('<p>银角大王</p>').appendTo($('.one')); 把银角大王追加到.one 开头追加 prepend() prependTo() 注意:$('.one').append($('.two p:first')); 把.two中的p的第一个元素加到one中,并且.two中没有刚才追加的元素了,因为不是克隆 // 同辈前插入内容 after()/before() // 同辈前插入内容 insertAfter()/insertBefore() // 包裹 wrap() // 给每个p标签包裹div $('p').wrap('<div></div>'); unwrap() 移出p元素的父元素 $("p").unwrap() wrapAll() // 给所有的p包裹一个div // $('p').wrapAll('<div></div>'); wrapInner() // 用span包裹p的内容 // $('p').wrapInner('<span></span>'); // 替换 replaceWith() // 用h3标签替换所有的p标签 // $('p').replaceWith('<h3>宝玉</h3>'); replaceAll() // 用h1替换掉所有的p标签 // $('<h1>林黛玉</h1>').replaceAll('p'); // 清空子级内容 empty() // 删除自身和内容 remove() // 克隆标签,属性,内容 clone() // 克隆标签,属性,内容,事件 clone(true)
工具
// 删除两边空格 $.trim()
属性
// 处理 系统属性和自定义属性 $('a').attr('href'):获取href属性 $('a').attr('href','http://www.baidu.com'):设置href属性 $('a').removeAttr('href'):删除href属性 // 处理 系统属性 prop() // 针对class的处理 $('a').addClass('active'):添加class $('a').removeClass('active'): 删除class $('a').toggleClass('active'): 切换class // 处理标签内容 console.log($('.box').html());:获取.box的内容 //今天是<strong>周四</strong> console.log($('.box').html('<h3>hello world</h3>')):修改.box的内容为//Hello world $('.box').html('<h3>hello world</h3>'):设置.box的内容 // 处理标签文本内容 $('span').text():获取span的文本内容 //今天是周四 $('span').text('hello world'):修改.box的文本内容为 //<h3>Hello world</h3>将内容中的标签原型展示 $('span').text('hello world'):设置.box的文本内容为 // 处理表单的值 $('.username').val():获取.username的value值 $('.username').val('zhangsan'):设置.username的value值为zhangsan
CSS
$('h3').css('width'):获取宽度 $('h3').css('width',500):设置h3宽度 $('h3').css('width','500px'):设置h3宽度 $('h3').css({width:500,height:500}):设置h3宽度和高度 // 获取标签距页面的边距 $('.box').offset() // 获取.box距有定位祖辈的边距,祖辈都没有定位,则距页面的边距 $('.box').position() // 获取和设置标签内容的滚动距离 scrollTop()/scrollLeft() // 宽度和高度(width/height) height()/width() // 宽度和高度(width+padding) innerWidth()/innerHeight() // 宽度和高度(width+padding+border) outerHeight/outerWidth()
效果
// 展示与隐藏(宽度,高度,透明度变化的过程) show()/hide()/toggle() // 下拉与上拉(高度变化的过程,需要设置宽) slideDown()/slideUp()/slideToggle() // 淡入淡出(透明度变化的过程) fadeIn()/fadeOut()/fadeTo()/fadeToggle() // 自定义动画 animate() // 停止动画 stop() $('.box').stop(); // 停止当前执行的动画 stop(true); //当前正在执行的动画效果停下来,队列动画全部清除 stop(true,true);//当前正在执行的动画效果停下来,队列动画清除,直接到达当前动画的目标值 // 延迟动画(单次定时器) delay()
筛选
.eq([index]) 如果写index就找索引为index的,否则找全部 .first() 第一个 .last() 最后一个 .hasClass(class) 包含class类的 .filter() 过滤 .is() 是 .has() 包含 .not() 不是 .slice() 切割 .children() 查找子代的孩子,参数可以为空,为空就找到全部的孩子 .find() 查找后代的孩子,参数不可以为空,找不到任何值 .next() 下一个 .nextAll()后面的所有 .prev() 上一个 .prevAll()上面的所有 .siblings() 兄弟们,不写参数就找所有的兄弟,写参数就找指定的元素 .parent() 父级 .parents() 祖辈,不写参数就找所有的祖辈,写参数就找参数指定的祖辈元素 .offsetParent() 如果祖辈有定位,就找有定位的祖辈,否则就是html .add() 添加一个新元素到一组匹配的元素中,并且这个新元素能匹配给定的表达式。 $('h3').css('color','pink').add('p').css('background','yellow'); 给h3先设置粉色字体颜色,然后给h3,和p一起设置黄色背景颜色 .addBack()一个字符串,其中包含一个选择器表达式,匹配当前元素集合不包括在内的元素 $('div').find('p').addBack().addClass('bg'); 给所有的div和div的后代p都添加bg的类 .end() 选取所有的div元素,查找并选取p子元素,然后再回过来选取div元素 $('div').css('margin','100px').find('p').css('padding','50px').end().css('border','10px solid #ddd'); 给div加margin值,然后找到p,给p设置padding,并且在返回来找到div 给div加边框
$('elem').each和$.each()
$('li').each(function(key,value){}) 遍历元素 $.each(arr|obj,function(key,value){}) 遍历数组或者对象
on
- 同时设置多个事件
$('.box').on('mouseover mouseout',function () { $(this).toggleClass('bg'); });
- 写多个事件
```
$('.box').on({
mouseover:function () {
$(this).addClass('bg');
},
mouseout:function () {
$(this).removeClass('bg');
},
click:function () {
console.log('点击');
}
});
```
off移除事件
function run() { console.log('点击box'); } $('.box').on('click',run); $('button').eq(0).click(function () { $('.box').off('click',run); }) 点击.box会触发run() 但是button给事件解绑了,然后在点击.box 不会触发run()事件
trigger() 手动触发某类事件
$('button:eq(1)').click(function () { $('.box').trigger('click'); }) 点击button按钮也会触发box的click事件, 例如 submit是提交事件,也可以给div设置一个提交事件,就用trigger()
事件委托
$('body').on('mouseover mouseout','.box',function () { $(this).toggleClass('bg'); // 此时this指向的是box, }); $('body').append('<div class="box"></div>'); 给父级添加事件,就算在后面在添加相同的标签也同样会执行之前添加的事件
上一篇: 你真的了解Web前端开发吗?未来前端远比你想的有前途!
下一篇: Fiber 树的构建
推荐阅读