第六章 jQuery
-
-
它通过易于使用的API在大量浏览器中运行,
-
使得HTML文档遍历和操作,事件处理,动画和Ajax变得更加简单。通过多功能性和可扩展性的结合,jQuery改变了数百万人编写JavaScript的方式。
-
操作: 获取节点元素对象,属性操作,样式操作,类名,节点的创建,删除,添加,替换
-
开发环境:写项目
-
生产环境:项目写完后,压缩代码
write less,do more
$('button')[0]
$(js节点对象)
6.5 jq的选择器
-
基础选择器
-
-
类用 .
-
<body> <div id="box" class="box"> <p class="active">mjj1</p> <p class="active">mjj2</p> <input type="text"> </div> <!-- 1.导入模块 --> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> // console.dir($); // 选择器 基础选择器 console.log($('.box'));//jquery对象 伪数组 // jquery对象转换js节点对象 console.log($('#box')[0]); // js节点对象转换jq对象 var box = document.getElementById('box'); console.log($(box),box); console.log($('#box>p'));-->打印子代 console.log($('input[type=submit]')); #打印时出现prevobject是指没有获取到对象 #绑定事件 $('#box .active').click(function(){ // 样式操作 console.log(this);-this指的是当前的js节点对象 // this.style // 设置单个样式属性 // $(this).css('color','red'); // $(this).css('fontSize','20px');#转jquery对象 // 设置多个属性 $(this).css({ 'color':'red', "font-size":40 }) console.log($(this).css('color'));--获取 })
- 高端选择器
<div id='box' class='box'> <p> mjj </p> </div> $('#box') -id $('.box') -class $('div p') $('div>p') $('div,p') $('div.box')
- 属性选择器
<input type = 'submit' value='提交'>
$('input[type=submit]')
- 基本过滤选择器
:eq(index) 选择一个 索引从0开始
:gt(index) 大于索引的元素都选择出来了,
:lt(index) 小于索引的元素都选择出来了
:first 获取第一个
:last 获取最后一个
:odd 获取奇数
:even 获取偶数
- 筛选选择器
.find() 即选择儿子也选择后代 .children() 只选择亲儿子 .parent() 选择父亲 .siblings() 查找所有的兄弟元素 //补充:获取文档,body和html console.log(document); console.log(document.body); console.log(document.documentElement);
- 过滤的方法
.eq() 选择一个 索引从0开始,(索引)
.children() 获取亲儿子
.find() 获取的后代
.parent() 获取父级对象
.siblings() 获取除它之外的兄弟元素
<body> <button id="btn">显示</button> <div id="box"></div> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $('#btn').click(function(){ if($(this).text() === '显示'){ $('#box').show(1000,function(){ $('#btn').text('隐藏'); }); }else{ $('#box').hide(1000,function(){ $('#btn').text('显示'); }); } //先停止掉在开就正常了 $('#box').stop().toggle(2000); $('#box').slideDown(2000); $('#box').fadeIn(2000); }) </script> </body>
-
卷帘门动画 slideDown() slideUp() slideToggle()
-
淡入淡出效果 fadeIn() fadeOut() fadeToggle()
-
自定义动画 .animate({params},speed,callback)
6.7 样式操作
通过调用.css()方法 如果传入一个参数,看一下这个参数如果是一个字符串表示获取值,如果是对象,表示设置多少属性值,如果是两个参数,设置单个属性值
css('字符串');--获取属性 css({'color':'red'});既可以设置一个属性也可以设置多个属性 css('color','yellow');设置一个属性
addClass() removeClass() toggleClass()
addClass('active abc rtt');--追加类名,原来的还存在 removeClass('active abc');移除一个或多个 toggleClass('active');开关似的切换类名
6.9对属性操作
attr(name,value);//设置属性 removeAttr(name);//删除属性
attr();获取的是标签上的属性 removeAttr(); prop();获取的是当前节点对象的属性 单选操作 removeProp(); $(function(){ //添加一个或者多个属性 $('p').attr('title','mjj');//添加一个 $('p').attr({'a':1,'b':2});//添加多个 console.log($('p').attr('id'));//获取值 //移除多个或一个 $('p').removeAttr('title id a'); }) prop();用在input上 removeProp();用在input上
//后置追加 父元素.append(子元素);//子元素可以是文本、标签、js对象,append()如果参数是jq对象,那么相当于移动操作 子元素.appendto(父元素); // 子.appendTo(父) $('<a href="#">百度一下</a>').appendTo('#box').css('color','yellow');//***** // 前置追加 $('#box').prepend('<p>hello world</p>'); // 子.prependTo(父) $('参考的元素').before('要添加的元素');在h2前面追加 $('<h3>女神</h3>').insertBefore('h2'); $('要插入的元素').insertBefore('参考元素'); after(); insrrtAfer();
- 文档的删
$('#btn').click(function(){ alert(1); // remove即移除标签,事件也跟着移除 /* $(this).remove();//**** // console.log($(this).remove()); $('#box').after($(this).remove()); */ // $(this).detach();只是移除节点,事件还保留 // $('#box').after($(this).detach()); // $('#box').html(' ');--清空 $('#box').empty();--清空 })
- 文档的替换
$('h3').replaceWith('000000');
replaceAll() 替换所有
- 文档的查
<head> <meta charset="utf-8"> <title></title> </head> <body> <div id="box"> <h4>太白</h4> </div> <button id="btn">按钮</button> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $(function(){ var oH3 = document.createElement('h3'); oH3.innerText = '女神'; // 父.append(子) $('#box').append('mjj'); $('#box').append('<h2>wusir</h2>');//***** $('#box').append(oH3); // append()如果参数是jq对象,那么相当于移动操作 $('#box').append($('h4')); $('h2').css('color','red'); // 子.appendTo(父) $('<a href="#">百度一下</a>').appendTo('#box').css('color','yellow');//***** // 前置追加 $('#box').prepend('<p>hello world</p>'); // 子.prependTo(父) $('h2').before('mjj2'); $('<h3>女神</h3>').insertBefore('h2'); $('h3').replaceWith('000000'); $('#btn').click(function(){ alert(1); // 即移除标签,事件也跟着移除 /* $(this).remove();//**** // console.log($(this).remove()); $('#box').after($(this).remove()); */ // $(this).detach(); // $('#box').after($(this).detach()); // $('#box').html(' '); $('#box').empty(); }) }) </script> </body>
.click();//鼠标单击事件,参数可选(data,fn) dblclick();//双击触发, jqury解决单双击的冲突问题,setTimeout() mousedown()/up();//鼠标按下/弹起触发事件 mousemove();//鼠标移动事件 mouseover()/out();//鼠标进入/立刻触发事件--鼠标指针穿过/离开被选元素或者当前元素的子元素,会触发事件 mouseenter()/leave();//鼠标进入/离开触发事件--鼠标指针只在穿过/离开被选元素 focus()/blur();//鼠标聚焦/失去焦点触发事件(不支持冒泡) keydown()/up;//键盘按键按下/弹起触发
<head> <meta charset="utf-8"> <title></title> <style type="text/css"> #box{ width: 100px; height: 40px; background-color: red; position: relative; } #child{ width: 400px; height: 100px; background-color: #000; position: absolute; top: 40px; display: none; } </style> </head> <body> <div id="box"> <div id="child"></div> </div> <input type="text"> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> // mouseover 鼠标穿过父级元素和子元素都会调用方法 /* $('#box').mouseover(function(){ console.log('移入进来了'); $('#child').slideDown(1000); }) $('#box').mouseout(function(){ console.log('移除了'); $('#child').slideUp(1000); }) */ /* $('#box').mouseenter(function(){ console.log('进来了'); $('#child').stop().slideDown(1000); }) $('#box').mouseleave(function(){ console.log('离开了'); $('#child').stop().slideUp(1000); }) */ $('#box').hover(function(){ $('#child').stop().slideDown(1000); },function(){ $('#child').stop().slideUp(1000); }) //默认加载页面聚焦行为 /* $('input[type=text]').focus(); $('input[type=text]').focus(function(){ //聚焦 console.log('聚焦了'); }) $('input[type=text]').blur(function(){ //聚焦 console.log('失去焦点了'); }) */ $('input[type=text]').keydown(function(e){ console.log(e.keyCode);//keyCode键盘码 switch (e.keyCode){ case 8://等于8的时候清空,8是回车 $(this).val(' ') break; default: break; } })
change();//表单元素发生改变时触发事件(此事件仅限于<input>元素,<textarea>框和<select>元素 select();//此事件仅限于input type类型为text和textarea表单元素 submit();//表单元素发生改变时触发事件(form表单有默认的submit行为,当对input type=submit按钮点击的时候会触发form的默认action,
此时可以调用jQuery的submit方法通过e.preventDefault()来阻止默认事件 javascript:void(0);//阻止默认事件 <a href="javascript:;">百度游戏啊</a> //阻止默认事件 e.preventDefault();//阻止默认事件
<body> <a href="javascript:;">百度游戏啊</a> <form action=""> <input type="text" placeholder="用户名"> <input type="password" placeholder="密码"> <input type="submit"> </form> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $('form').submit(function(e){ e.preventDefault(); console.log('11111'); }) </script>
<audio src="static/海贼王%20-%20ビンクスの酒(独唱).mp3" controls=""> </audio> <canvas id="" width="" height=""></canvas>