JS基础(四)之jQuery
31、jQuery(http://jquery.com/)是一个快速、简洁的JavaScript框架。
- 它封装了JavaScript常用的功能代码,提供一种便捷的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
- jQuery主要包括jQuery Core(核心库)、jQuery UI(界面库)、Sizzle(CSS选择器)、jQueryMobile(jQuery移动版)和QUnit(测试套件)5个部分
32、jQuery特性
- 优雅的语法规则:发生在同一个jQuery对象上的一组动作,可直接连写,无需重复获取对象
- 框架封闭:jquery只建立一个名为jQuery的对象,其所有的方法都建立在这个对象之下
- 封装繁琐的底层技术:jQuery定义了大量的方法,还封装了大量的事件处理函数,是的jQuery处理事件绑定非常稳定;将所有的Ajax操作封装到一个函数$.ajax()中
- 自成体系:完全摆脱JavaScript的设计模式,允许用户在jQuery环境下跳动jQuery函数选择相关匹配元素,然后直接在jQuery对象上完成操作而无需在jQuery和JavaScript两种设计模式中来回切换
33、jQuery构造器
jQuery构造器即jQuery()函数,简写为$(),可以接收4个类型的参数
1 $(function(){ 2 var red = $("p span"); //选择元素中包含的span元素,并返回该元素的jQuery对象引用指针 3 red.css("color","red"); //调用jQuery对象的css()函数,定义选取对象的CSS样式,其中第1个参数表示CSS属性名,第2个参数表示CSS属性值。 4 }) 5 </script> 6 <script> 7 $(function(){ 8 $("<div><span>文本块3</span></div>").appendTo("body");//HTML代码段 9 }) 10 </script> 11 <script src="jquery/jquery-1.11.1.js" type="text/javascript"></script> 12 <script> 13 $(function(){ 14 $("span").css("font-size","12px");//把元素转化为jQuery对象,在调用jQuery方法 15 }) 16 </script> 17 <script> 18 $(function(){ 19 alert("Hello World!");//jQuery绑定函数 20 }); 21 </script>
22 <script> 23 $(function(){ 24 var span = document.getElementsByTagName("span")[0]; //获取节点对象,此时返回DOM元素对象 25 var span = $(span); //把DOM对象转换为jQuery对象 26 span.css("color","red"); //调用jQuery对象的css()方法定义字体颜色为红色 27 }); 28 </script> 29 <script> 30 $(function(){ 31 var span = $("span")[0]; //把jQuery对象转换为DOM对象 32 span.style.color = "blue"; //调用DOM对象的style属性,设置字体颜色为蓝色 33 }); 34 </script>
34、jQuery基本用法
1 <script> 2 $(function(){ 3 var li = $("li"); 4 li.each(function(n){ 5 this.style.fontSize = 30- n*2 +"px";//$(this).css("font-size",30- n*2 +"px"); 6 if(n==2) return false; 7 }); 8 }) 9 </script> 10 <script> 11 $(function(){ 12 var li = $("li"); 13 alert(li.size()); //返回值为10 14 alert(li.length); //返回值为10 15 }) 16 </script> 17 <script> 18 $(function(){ 19 var li = $("li").get().reverse(); //把当前jQuery对象转换为为颠倒的DOM集合 20 var ol = $("ol").html(li); 21 }) 22 </script> 23 <script src="jquery/jquery-1.11.1.js" type="text/javascript"></script> 24 <script> 25 $(function(){ 26 var li = $("li"); 27 var temp = $("li:contains('陆 游')"); 28 alert(li.index(temp)); 29 }) 30 </script> 31 </head> 32 <body> 33 <h1>宋词排行榜 </h1> 34 <ol> 35 <li>苏 轼《念奴娇·赤壁怀古》</li> 36 <li>岳 飞《满江红·怒发冲冠》 </li> 37 <li>李清照《声声慢·寻寻觅觅》 </li> 38 <li>苏 轼《水调歌头·明月几时有》 </li> 39 <li>柳 永《雨霖铃·寒蝉凄切》 </li> 40 <li>辛弃疾《永遇乐·千古江山》 </li> 41 <li>姜 夔《扬州慢·淮左名都》 </li> 42 <li>陆 游《钗头凤·红酥手》 </li> 43 <li>辛弃疾《摸鱼儿·更能消》 </li> 44 <li>姜 夔《暗香·旧时月色》 </li> 45 </ol> 46 <script> 47 $(function(){ 48 var href = $("a").attr("href");//只显示第一个值 49 alert(href); 50 }) 51 </script> 52 </head> 53 <body> 54 <ul> 55 <li><a href="http://www.baidu.com/" target="_blank">百度</a></li> 56 <li><a href="http://www.sohu.com/" target="_self">搜狐</a></li> 57 <li><a href="http://www.sina.com.cn/" target="_top">新浪</a></li> 58 <li><a href="http://www.qq.com/" target="new">腾讯</a></li> 59 </ul> 60 <script> 61 $(function(){ 62 var href = $("a:contains('搜狐')").attr("href"); 63 alert(href); 64 }) 65 </script> 66 <script> 67 $(function(){ 68 $("a").each(function(){ 69 $(this).attr("title",this.innerHTML + "(" + $(this).attr("href") + ")" ); 70 }); 71 }) 72 </script> 73 <script> 74 $(function(){ 75 $("a").attr("title", function(){//增加属性 76 return this.innerHTML + "(" + $(this).attr("href") + ")" ; 77 }); 78 }) 79 </script> 80 <script> 81 $(function(){ //增加多个属性 82 $("img").attr({width:"100",height:"100",title:"这是一个示例",alt:"示例图像"}); 83 }) 84 </script> 85 <script> 86 $(function(){ 87 $("img").removeAttr("width");//删除指定属性 88 }) 89 </script> 90 91 <script> 92 $(function(){ //定义类样式 93 $("p").addClass("red");//$("p").attr("class","red"); 94 }) 95 </script> 96 <script> 97 $(function(){ 98 $("li").each(function(){ //遍历jQuery对象内所有对象 99 this.onmouseover = function(){ //为当前元素注册鼠标经过时的事件 100 $(this).toggleClass("bg"); //开关背景样式类(bg) 101 } 102 this.onmouseout = function(){ //为当前元素注册鼠标移开时的事件 103 $(this).toggleClass("bg"); //开关背景样式类(bg) 104 } 105 this.onclick = function(){ //为当前元素注册鼠标单击时的事件 106 $(this).toggleClass("bg1"); //开关背景样式类(bg1) 107 } 108 }); 109 }) 110 </script> 111 112 <body> 113 <p>段落文本<span>1</span></p> 114 <script> 115 alert($("p").text());//输出段落文本1,忽略span标签 116 </script> 117 </body> 118 <body> 119 <p>段落文本<span>1</span></p> 120 <script> 121 $("p").text("<img src='images/1.jpg' width='100' />");//替换文本 输出<img……> 122 </script> 123 </body> 124 <body> 125 <p>段落文本<span>1</span></p> 126 <script> 127 alert($("p").html());//输出 段落文本<span>1</span> 128 </script> 129 </body> 130 <body> 131 <p>段落文本<span>1</span></p> 132 <script> 133 $("p").html("<img src='images/1.jpg' width='100' />");//输出 图片 134 </script> 135 </body> 136 <body> 137 <input type="text" value="文本框" /> 138 <input type="radio" value="单选按钮" /> 139 <input type="checkbox" value="复选框" /> 140 <input type="hidden" value="隐藏域" /> 141 <input type="submit" value="提交按钮"/> 142 <script> 143 alert($("input").val()); 144 alert($($("input")[1]).val()); //显示单选按钮的值 145 alert($($("input")[2]).val()); //显示复选框的值 146 alert($($("input")[3]).val()); //显示隐藏域的值 147 alert($($("input")[4]).val()); //显示提交按钮的值 148 </script> 149 </body> 150 <body> 151 <select multiple="multiple"> 152 <option value="1">选项1</option> 153 <option value="2" selected="selected">选项2</option> 154 <option value="3" selected="selected">选项3</option> 155 </select> 156 <script> 157 alert($("select").val());//输出 2,3 158 </script> 159 </body> 160 <body> 161 <input type="text" /> 162 <script> 163 $("input").val("文本框的值");//为文本框赋值 文本框的值 164 </script> 165 </body> 166 <body> 167 <input type="radio" value="radio1" />单选按钮1 168 <input type="radio" value="radio2" />单选按钮2<br> 169 <input type="checkbox" value="check1" />复选框1 170 <input type="checkbox" value="check2" />复选框2<br> 171 <select multiple="multiple"> 172 <option value="1">选项1</option> 173 <option value="2">选项2</option> 174 <option value="3">选项3</option> 175 </select> 176 <script> 177 $("input").val(["radio2","check2"]);//单选按钮和复选框必须要使用数组来传递值 178 $("select").val(["1","3"]);//下拉菜单可以不用数组传递值 179 </script> 180 </body>
35、选择器和过滤器
1 <script src="jquery/jquery-1.11.1.js" type="text/javascript"></script> 2 <script> 3 $(function(){ 4 $("#p1"); //ID选择器 5 $("#box1 p"); //包含选择器 6 $("#box1>#p1"); //子选择器 7 $("p#p1"); //指定标签选择器 8 $("p[id='p1']"); //匹配属性等于特定属性值 9 $("[id$='1']"); //匹配属性值结尾的值 10 $("#box1 [id^='p']"); //包含选择器,配合匹配属性值开始的值 11 $("[id*='1']"); //匹配属性值包含某个字符串 12 }) 13 </script> 14 <script> 15 $(function(){ 16 var $temp = $("li"); 17 $temp.css("color","red");//类选择器 18 }) 19 </script> 20 <style type="text/css"> 21 </style> 22 </head> 23 <body> 24 <ul id="list"> 25 <li>列表项1</li> 26 <li>列表项2</li> 27 <li class="l3">列表项3</li> 28 <li></li> 29 </ul> 30 </body> 31 <script> 32 $(function(){ 33 $("div:hidden").css("display","block");//使隐藏元素显示出来 34 }) 35 </script> 36 <style type="text/css"> 37 </style> 38 </head> 39 <body> 40 <div>盒子1</div> 41 <div style="display:none">盒子2</div> 42 <div><p>盒子3</p></div> 43 </body> 44 <script> 45 $(function(){//表单选择器,:input匹配input、select、button、textarea元素 46 $("input:text").css("border","solid 1px red"); 47 $("input:checkbox").css("border","solid 1px red"); 48 $("input:radio").css("border","solid 1px red"); 49 $(":image").css("border","solid 1px red"); 50 $(":file").css("border","solid 1px red"); 51 $(":submit").css("border","solid 1px red"); 52 $(":reset").css("border","solid 1px red"); 53 $(":password").css("border","solid 1px red"); 54 $(":button").css("border","solid 1px red"); 55 }) 56 </script> 57 <style type="text/css"> 58 </style> 59 </head> 60 <body> 61 <form> 62 <input type="text" value="文本框" /> 63 <input type="checkbox" value="复选框" />复选框 64 <input type="radio" value="单选按钮" />单选按钮 65 <input type="image" src="images/1.jpg" value="图像按钮" /> 66 <input type="file" value="文件域" /> 67 <input type="submit" value="提交按钮" /> 68 <input type="reset" value="重置按钮" /> 69 <input type="password" value="密码域" /> 70 <input type="button" value="普通按钮" /> 71 <select> 72 <option value="下拉菜单">下拉菜单</option> 73 </select> 74 <textarea>文本域</textarea> 75 <button>按钮</button> 76 </form> 77 </body> 78 <script> 79 $(function(){//过滤器是函数 80 var divs = $("div"); 81 divs.eq(0).css("color","red");//索引值为0 即第一个div元素 82 divs.filter(".red,#box1").css("color","red");//过滤出满足匹配条件的div元素 83 divs.slice(0,2).css("color","red");//使用slice函数进行过滤 84 }) 85 </script> 86 <style type="text/css"> 87 </style> 88 </head> 89 <body> 90 <div>盒子1</div> 91 <div id="box1">盒子2</div> 92 <div class="red">盒子3</div> 93 </body>
36、文档处理、css处理
1 <script> 2 $(function(){ 3 $("div").append("<span style='color:red'>套子</span>");//span标签放在div标签里,盒子后 4 }) 5 </script> 6 <style type="text/css"> 7 </style> 8 </head> 9 <body> 10 <div>盒子</div> 11 12 </body> 13 <script> 14 $(function(){ 15 $("p").appendTo("#box");//p放在div里,div内容后 16 $("p").prepend($("#box")[0]);//div放在p里,p内容前 17 $("p").prependTo($("#box")[0]);//p放在div里,div内容前 18 }) 19 </script> 20 <script> 21 $(function(){ 22 $("div").after($("p")); 23 $("div").before($("p")); 24 $("div").insertAfter($("p")); 25 $("div").insertBefore($("p")); 26 27 }) 28 </script> 29 <style type="text/css"> 30 </style> 31 </head> 32 <body> 33 <p>段落</p> 34 <div id="box">盒子</div> 35 </body> 36 <script src="jquery/jquery-1.11.1.js" type="text/javascript"></script> 37 <script> 38 $(function(){ 39 $("a").wrap(document.getElementsByTagName("li")[0]);// $("a").wrap("<div></div>");//为每个a元素包裹一层li元素 40 $("li").wrapAll(document.getElementsByTagName("ul")[0]);//为所有的li元素包裹一个ul元素 41 $("li").wrapInner("<span></span>");//为每个li元素内嵌一层span元素 42 }) 43 </script> 44 <style type="text/css"> 45 </style> 46 </head> 47 <body> 48 <a href="#">超链接1</a><a href="#">超链接2</a><a href="#">超链接3</a> 49 </body> 50 <script> 51 $(function(){ 52 $("span").replaceWith("<div>盒子</div>");//输出 <div>盒子</div><div>盒子</div><div>盒子</div> 53 $("span").replaceAll("div");//与上相反 54 }) 55 </script> 56 <style type="text/css"> 57 </style> 58 </head> 59 <body> 60 <span>包子</span><span>包子</span><span>包子</span> 61 </body> 62 <script> 63 $(function(){ 64 $("div").click(function(){ 65 $(this).css("color","red"); 66 }).clone(true).appendTo("p");//克隆事件添加到p标签里 段落文本之后 67 $("span").click(function(){ 68 $(this).css("color","red"); 69 }) 70 var span=$("span").remove();// remove()删除元素不保留事件 单击不变色 71 $("p").prepend(span);//span元素剪切到span元素里 段落文本之前 72 73 /* 74 var span=$("span").detach(); 75 $("p").prepend(span);//detach()删除元素保留事件 单击span变红 76 */ 77 }) 78 </script> 79 <style type="text/css"> 80 </style> 81 </head> 82 <body> 83 <div>盒子1</div> 84 <p>段落文本3</p> 85 <span>span</span> 86 </body> 87 <script> 88 $(function(){ 89 $("p").css({//CSS属性名可以不加引号,但是对于复合属性名,则必须增加引号 90 color:"blue", 91 "font-size":"14px", 92 "background-color":"red" 93 }); 94 $("p").css("border","solid 1px blue"); 95 alert($("p").css("border")); 96 97 }) 98 </script> 99 <style type="text/css"> 100 </style> 101 </head> 102 <body> 103 <p>段落1</p><p>段落2</p> 104 </body> 105 <script> 106 $(function(){ 107 $("p:last").offset({ 108 left:50, 109 top:50 110 }); 111 var offset = $("p:last").offset(); 112 alert( "左侧距离: " + offset.left + ", 顶部距离: " + offset.top ); 113 }) 114 </script> 115 <script> 116 $(function(){ 117 var div = $("div"); 118 $("p").html("innerHeight=" + div.innerHeight() + "<br> outerHeight=" + div.outerHeight());//输出innerHeight=199.8 119 outerHeight=299 120 121 }) 122 </script> 123 <style type="text/css"> 124 div{ 125 width:100px; 126 height:100px; 127 padding:50px; 128 border:solid 50px red; 129 } 130 </style> 131 </head> 132 <body> 133 <div></div> 134 <p></p> 135 </body>
37、事件处理、动画处理
1 <script src="jquery-1.11.1.js" type="text/javascript"></script> 2 <script> 3 window.onload=function(){ 4 alert("页面加载完毕4!"); 5 } 6 window.onload=function(){ 7 alert("页面加载完毕3!"); 8 } 9 $(document).ready(function(){ 10 alert("页面加载完毕2!"); 11 }) 12 $(document).ready(function(){ 13 alert("页面加载完毕1!"); 14 }) 15 16 $(function(){ 17 alert("页面加载完毕0!"); 18 19 }) 20 $(function(){ 21 alert("页面加载完毕-1!"); 22 23 }); 24 function f(){ 25 alert("页面加载完毕-2!"); 26 } 27 </script> 28 <style type="text/css"> 29 </style> 30 </head> 31 <body onload="f()">//2 1 0 -1 -2 32 </body> 33 <script> 34 $(function(){ 35 $("div").bind("me",function(){//$('#myol li').bind('click',getHtml);$('#myol li').live('click',getHtml);$('#myol').delegate('li','click',getHtml);$('#myol li').on('click',getHtml);$('#myol').on('click', 'li',getHtml); 36 alert($(this).text());//live()方法已废除,bind()方法、delegate()方法都调用内部on()方法,建议使用on()方法,更快更灵活; 37 }); 38 $("div").trigger("me");//默认时间和自定义事件必须由此方法来触发 39 /* 40 $("div").bind("mouseover",function(){//或者把trigger方法封装在其他事件中,借由鼠标滑入时自动触发 41 $("div").trigger("me"); 42 }) 43 */ 44 $("div").bind("click",function(){//绑定鼠标单击事件 45 alert($(this).text()); 46 }) 47 $("p").bind("mouseover",function(){//借由鼠标滑入触发单击事件或者直接单击也可以触发该事件 48 $("div").trigger("click"); 49 }) 50 $("input").focus(function(){ 51 $("<span>单击一次!</span>").appendTo("body"); 52 }) 53 $("#ok").click(function(){ 54 $("input").triggerHandler("focus");//triggerHander方法阻止默认事件触发,本例聚焦事件只可以由单击事件触发,不再由聚焦事件触发 55 }) 56 }) 57 </script> 58 <script> 59 $(function(){ 60 $("p").hover(//jQuery中自定义的两个事件hover(over,out)、toggle(fn,fn) 61 function(){ 62 $(this).css("color","red"); 63 }, 64 function(){ 65 $(this).css("color","transparent");//恢复默认颜色 66 } 67 ); 68 $("footer").toggle(function(){//jQuery在1.9版本中删除toggle()方法 69 $(this).css("color","pink"); 70 }, 71 function(){ 72 $(this).css("color","transparent"); 73 } 74 ); 75 $("div").one("click",{who:"zhu"},function(event){//one()事件仅能执行一次即自动撤销 76 alert(event.data.who); 77 }); 78 79 }); 80 </script> 81 <script> 82 $(function(){ 83 $("p").show(1000,function(){//只有隐藏元素才可以执行show()方法 84 alert($(this).text()+"显示完毕"); 85 }) 86 $("div").slideDown("slow");//分大小写 隐藏元素以滑动效果显示 87 $("h2").show(1000,function(){//只有显示元素才可以执行hide()方法 88 alert($(this).text()+"隐藏完毕"); 89 }) 90 $("h2").slideUp("slow");//显示元素以滑动效果隐藏 91 $("h3").slideToggle("slow");//隐藏元素已经显示的元素 或者显示已经隐藏的 92 }) 93 </script> 94 <style type="text/css"> 95 </style> 96 </head> 97 <body> 98 <p style="display:none">段落文本</p> 99 <div style="display:none">示例div元素</div> 100 <h2>h2示例元素</h2><br/><br/> 101 <h3>h3元素示例</h3> 102 103 </body> 104 <script> 105 $(function(){ 106 $("p").fadeIn("2000");//只能作用于隐藏元素 107 $("p").bind("mouseover",function(){//淡出淡入 108 $("p").fadeOut(100); 109 $("p").fadeIn(100); 110 $("p").fadeOut(100); 111 $("p").fadeIn(100); 112 }) 113 $("div").fadeTo("slow",0.1,function(){ 114 $(this).fadeTo("slow",1); 115 }) 116 }) 117 </script> 118 <style type="text/css"> 119 </style> 120 </head> 121 <body> 122 <p style="display:none">段落文本段落文本段落文本段落文本段落文本</p> 123 <div>雨夜,湖边风雨发作,直教人瑟瑟发抖!</div> 124 </body>