JQuery
目录
- 获取:
$("css选择器") 修改
内容
text()html()val()
属性
prop()attr()addClass()removeClass()
添加
append()before()after()
删除
remove()
获取子标签
children()find()
获取兄弟标签
prev()next()
获取父标签
parent()parents()
修改css
css()
事件
on()
遍历
eq()first()last()each()
动画
内置
fadeIn()fadeOut()slideDown()slideUp()
自定义
aniamte()
基础概念
背景
JavaScript 原生DOM部分的不便之处:
- 单词太多-api不好记,
- 设置事件不方便,代码量较大
- 调用繁琐。比如找父元素,遍历多个标签等
概念
- jQuery是第三方的JavaScript函数库。jQuery本质是一个js文件。内部已经写好了大量的函数用于进行快捷的DOM操作。jQuery旨在write less,do more。
版本
- 目前国内用的比较多的是3.5.1版本。以及能够支持ie8的1.11.1版本
- 从jQuery2.x开始,就不再支持ie8。
引入jQuery
- 通过
<script src="文件路径"></script>引入。 - jQuery是先引入才能使用
<script src="./jquery.1.11.1.min.js"></script><script>//jQuery代码</script>
jQuery的一般使用流程
- 页面引入了jQuery
- 利用jQuery选择器找到需要操作的HTML标签
- 通过jQuery提供的函数完成dom操作
注意点
- 如果页面使用了jQuery,那么用jQuery操作的HTML标签就不能再使用原生的dom api。比如innerHTML、appendChild、parentElement等。如果要用,那么必须先完成jQuery标签和原生DOM标签的转换
获取jQuery标签以及和原生DOM标签的切换
通过jQuery获取页面上的标签
$("css选择器");//例子:var $box = $('#box');//获取id为box的HTML标签
- 通过css选择器去寻找匹配到的HTML标签,会根据返回的个数自动判断是返回一个元素或一个数组。
jQuery标签和DOM标签切换
- jQuery转原生DOM
var 原生dom标签变量名 = jQuery标签变量名.get(0);例子:var $box = $('#box');//把jquery 转为原生 DOM 标签var box = $box.get(0);console.log($box)console.log(box);
- 原生DOM 转为jQuery
var jQuery标签变量名 = $(原生dom标签变量名);例子:var box = document.querySelector('#box');var $box = $(box);console.log($box);
内容、属性操作
内容相关
html(): 类似于原生中的innerHTML。用于获取某个标签的内部HTML代码text():类似于原生的innerText,获取标签的内部文本val():类似于原生的value,主要获取表单元素的内容。
语法:jQuery标签变量名.html();jQuery标签变量名.html("新内容");jQuery标签变量名.text();jQuery标签变量名.text("新内容");jQuery标签变量名.val();jQuery标签变量名.val("新内容");例子:html :<div><p>这是div中的 p标签</p></div><input value="123">获取:var divText = $('div').text();var divHTML = $('div').html();var inputValue= $('input').val();设置$('div').text('新内容');$('div').html("<a href='#'>百度一下</a>");$('input').val("456");
属性相关
attr():获取或设置HTML标签的某个属性prop():获取或设置HTML标签的某个属性- 跟attr()的区别在于prop适用于标签的内置属性,而attr()更适用于用户自定义属性。
removeProp():删除指定的某个属性removeAttr():删除指定的某个属性.推荐使用addClass():给某个标签追加一个classremoveClass():删除某个标签的指定class
语法:jQuery标签变量名.attr("属性名");jQuery标签变量名.attr("属性名","属性值");jQuery标签变量名.prop("属性名");jQuery标签变量名.prop("属性名","属性值");jQuery标签变量名.removeProp("属性名");jQuery标签变量名.removeAttr("属性名");jQuery标签变量名.addclass("class名");jQuery标签变量名.removeclass("class名");例子:html:<div class="item"><p>这是div中的 p标签</p></div><input value="123">JavaScript://获取var value1 = $('input').attr('value')var value2 = $('input').prop('value')//设置$('div').addClass('box');$('div').removeClass('item');
修改css
css()
语法://设置jQuery标签变量名.css('css属性名','css属性值');//批量设置cssjQuery标签变量名.css({'css属性名1':'css属性值1','css属性名2':'css属性值2','css属性名3':'css属性值3',});//获取jQuery标签变量名.css('css属性名');例子:背景颜色为红色,字体颜色为白色,有一个白色的1px的边框html :<div id="box"></div>JavaScript:var $box = $('#box');//$box.css('background-color','red');//$box.css('color','white');//$box.css('border','1px solid white');// css批量设置$bos.css({'background-color':'red','color':'white',"border":"1px solid white"});
添加、删除
添加
append():类似于原生的appendChild,在某个标签之后插入一个新标签,新标签会作为最后一个子标签before():在某个标签之前插入一个新标签,新标签会作为上一个兄弟标签after():在某个标签之后插入一个新标签,新标签会作为下一个兄弟标签
语法:jQuery标签变量名.append("新标签的HTML代码");jQuery标签变量名.before("新标签的HTML代码");jQuery标签变量名.after("新标签的HTML代码");例子://添加和删除var newTr = `<tr><td>卫龙辣条3</td><td><img src="img/id3.jpg" alt="" /></td><td>5</td><td><button >-</button><input type="text" value="1" /><button >+</button><button >删除</button></td><td>0</td></tr>`;// 1. 生成一个新商品tr作为tbody的最后一个子标签//$('tbody').append(newTr);// 2.插入到总价tr之前 before//$('tbody tr:last-child').before(newTr);//3. 作为tbody的第一个商品// $('tbody tr:first-child').before(newTr);// 4作为tbody的第二个商品:after//$('tbody tr:first-child').after(newTr);
删除
remove():删除找到的所有标签
jQuery标签变量名.remove();例子:删除除了总价行以外的所有的tbody中的tr$('tbody tr:not(:last-child)').remove();
- 如果找到了多个标签,其中的每个标签都会被删除
获取子、兄弟、父标签及遍历
获取子标签
children():获取某个标签的所有直接子标签find('css选择器'):根据css选择器获取某个标签的满足条件的所有后代标签
获取兄弟标签
prev():获取某个标签的上一兄弟标签next():获取某个标签的上一兄弟标签
获取父标签
parent():获取某个标签的直接父标签parents('css选择器'):获取某个标签的某个祖先标签,具体是通过css选择器来指代
jQuery标签变量名.parent();jQuery标签变量名.parents(css选择器);jQuery标签变量名.prev();jQuery标签变量名.next();jQuery标签变量名.children();jQuery标签变量名.find(css选择器);例子://获取兄弟标签// 获取.goodInput的上一个和下一个兄弟标签var $input = $('.goodInput');var $prev = $input.prev();var $next = $input.next();//获取父标签// 获取.goodInput的父标签 以及对应的tr标签var $input = $('.goodInput');var $father = $input.parent();// var $tr = $father.parent();var $tr = $input.parents('tr');//获取子标签//获取tbody的所有tr标签以及其中的所有的input标签var $tbody = $('tbody');//所有的trvar $trs = $tbody.children();//找到tbody中的所有input标签var $inputs = $tbody.find('input');
遍历
first():获取遍历标签中的第一个last()::获取遍历标签中的最后一个each():jQuery专门用于对jQuery标签的快捷遍历eq(i):获取找到标签中指定下标的标签,即第i个jQuery标签
语法//旧:遍历找到的input标签 :eq()for(var i=0;i<$inputs.length;i++){var $input = $inputs.eq(i);//等同于$inputs[i]}//jQuery 遍历$jQuery待遍历标签变量名.each(function(index){//index是当前遍历数据的下标,从0开始this指的是当前遍历的标签,原生dom ->$(this)转为jQuery标签});$jQuery待遍历标签变量名.first();$jQuery待遍历标签变量名.last();例子:// eachvar $items = $('.item');$items.each(function(index,elem){//index是当前遍历下标,elem就是指的this,可选// console.log($(this));var old = Number($(this).text());$(this).text(old +1);})//获取这些div的中的第一个和最后一个console.log($items.first(),$items.last())
动画
内置动画
淡入淡出
fadeIn():淡入fadeOut():淡出
下拉上滑
slideDown():下拉slideUp():上滑jQuery标签变量名.slideDown(动画毫秒时间);jQuery标签变量名.slideUp(动画毫秒时间);jQuery标签变量名.fadeIn(动画毫秒时间);jQuery标签变量名.fadeOut(动画毫秒时间);
如果对同一个标签设置了多个动画,按照动画代码的书写顺序依次执行
自定义动画
animate():用户自定义动画 ```javascript jQuery标签变量名.animate({ “css属性名1”:”css属性值1”, “css属性名2”:”css属性值2”, “css属性名n”:”css属性值n” },动画持续毫秒时间);
例子: html:
JavaScript: 实现2s内width为300px,height为300px $(‘div’).animate({ “width”:”300px”, “height”:”300px” },2000);
- animate基本上只支持跟位置和尺寸相关的动画。其他的基本都不支持。- 如果要颜色的动画,可以使用css3,用JavaScript来切换class达到控制动画的目的<a name="e796c583"></a>### 动画结束后执行js代码-jQuery的每个动画函数都可以支持额外的参数,该参数必须是一个函数,用于表示在动画结束后要执行的代码```javascriptjQuery标签变量名.动画函数名(其他参数,function(){//动画结束后要执行的代码});例子:HTML:<div></div>JavaScript://1, 2s淡入后改变div的内容为123$("div").fadeIn(2000,function(){$(this).text('123');})//2. 2s向右移动300px后改变div背景颜色为蓝色$('div').animate({"margin-left":"300px"},2000,function(){$(this).css('background-color','blue');})
事件(on-默认使用事件委托)
on()
$父标签标签变量名.on('事件名','要执行事件的标签css选择器',function(e){//触发事件时要执行的代码});例子:HTML:<div id='box'><div>JavaScript:$('body').on('click','#box',function(e){当id为box的标签发生点击事件要执行的代码});
- 支持同时给多个标签设置
- 支持JavaScript动态添加的标签
其他快捷事件方法
clickhoverdblclick
其他api
show():等同于css('display','block'),显示某个标签hide():等同于css('display','none'),隐藏某个标签jQuery标签变量名.show();jQuery标签变量名.hide();
链式调用
背景
- 如果需要对同一个标签执行多句的jQuery代码,那么会导致不断的获取jQuery标签以及代码量过多。
html: <div></div>JavaScript:// div设置width为300px,向右移动300px,改变div的内容为123 再隐藏div$('div').css('width','300px');$('div').animate({"margin-left":"300px"},1000);$('div').text('123');
概念
- 即对同一个标签的多句代码可以整合成一句。
作用
- 代码整齐
- 减少一定的代码量
语法
jQuery标签变量名.函数名1().函数名2().函数名3()....函数名n();例子:$('div').css('width','300px').animate({"margin-left":"300px"},1000).text('123');$('div').css('width','300px')
- 以上的每个函数都是接着前一个函数的执行结果继续执行
- 如果某个函数本身就是返回某个文字,后续就不能再使用链式调用。
练习
1. 实现jQuery版水平以及淡入淡出轮播图2. 实现表格的选择以及全选功能3. 用jQuery对以下dom进行优化购物车倒计时时钟雪花飘飘选座movie评论
