jquery
关于jQuery:
1、由美国人John Resig创建。
2、一个优秀简洁的JavaScript框架,其宗旨是——WRITE LESS,DO MORE!。
3、轻量级的js库,很小,兼容性好。兼容CSS3,兼容各种浏览器。
4、高效处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
5、它的说明文档很全,有各种很详细的应用,各种成熟的插件可供选择。
jQuery对象:
jQuery对象是经过jQuery包装DOM后产生的。jQuery对象是jQuery独有的,一旦对象产生,就可以使用jQuery里面的方法:$("test").html();
1 $("#test").html() 2 #获取ID为test元素内的代码。 3 #html是jQuery内的代码 4 #获取 jQuery对象特有的标识为$
jQuery的版本说明
官网下载
http://jquery.com/download/
选择器和筛选器
基本选择器
$("*") $("#id") $(".class") $("element") $(".class,p,div")
层级选择器
$(".outer div") $(".outer>div") $(".outer+div") $(".outer~div")
基本筛选器
$("li:first") $("li:eq(2)") $("li:even") $("li:gt(1)")
属性选择器
$('[id="div1"]') $('["alex="sb"][id]')
表单选择器
1 $("[type='text']")----->$(":text") 注意只适用于input标签 : $("input:checked") 示例代码:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div>hello</div> 9 <a href="">click</a> 10 <p id="p1" xxx = "sb">哈哈哈哈哈</p> 11 <p id="p2" xxx = "sb">哈哈哈哈哈1</p> 12 <div class="outer">outer 13 <div class="inner">inner 14 <p>孙子</p> 15 </div> 16 <p>儿子</p> 17 </div> 18 <div>alex</div> 19 <p>lqj</p> 20 <ul> 21 <li>1111</li> 22 <li>2222</li> 23 <li>3333</li> 24 <li>4444</li> 25 <li>5555</li> 26 </ul> 27 <input type="text"> 28 <input type="checkbox"> 29 <input type="submit"> 30 <script src = "jquery-3.3.1.min.js"></script> 31 <script> 32 // $("div").css("color","red") 33 // jQuery("div").css("color","red") 34 //基本选择器 35 //$('*').css('color','red') 36 //层级选择器 37 // $(".outer p").css('color','red') 38 //后代选择器 39 // $(".outer>p").css('color','red') 40 //子代选择器 41 // $(".outer+p").css("color",'red') 42 //后面的兄弟选择器 43 //$(".outer~p").css("color",'red') 44 //基本筛选器 45 // $("li:first").css("color",'red') 46 // $("li:last").css("color",'red') 47 // $("li:eq(-1)").css("color",'red') 48 //$("li:odd").css("color",'red') 49 //$("li:gt(2)").css("color",'red') 50 //$("li:even").css("color",'red') 51 //属性选择器 52 //$("[alex = 'sb']").css('color','red') 53 //双重属性选择器 54 // $("[alex = 'sb'][id = 'p1']").css('color','red') 55 //表单选择器 56 //$("[type = 'text']").css('width',"200px") 57 //其他的写法 58 $(":text").css('width',"400px") 59 </script> 60 </body> 61 </html>
筛选器
过滤筛选器
$("li").eq(2) $("li").first() $("ul li").hasclass("test")
查找筛选器
$("div").children(".test") $("div").find(".test")
$(".test").next() $(".test").nextAll() $(".test").nextUntil()
$("div").prev() $("div").prevAll() $("div").prevUntil()
$(".test").parent() $(".test").parents() $(".test").parentUntil()
$("div").siblings()
示例代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div>hello</div> <a href="">click</a> <p id="p1" xxx = "sb">哈哈哈哈哈</p> <p id="p2" xxx = "sb">哈哈哈哈哈1</p> <div class="outer">outer <div class="inner">inner <p>孙子</p> </div> <p>儿子</p> <p class="pp">儿子1</p> <p>儿子2</p> <p>儿子3</p> </div> <div>alex</div> <p>lqj</p> <ul> <li>1111</li> <li>2222</li> <li>3333</li> <li>4444</li> <li>5555</li> </ul> <input type="text"> <input type="checkbox"> <input type="submit"> <script src = "jquery-3.3.1.min.js"></script> <script> //过滤筛选器,推荐使用 //$("li").eq(2).css("color","red") // $("li").first(2).css("color","red") // $("li").last(2).css("color","red") //查找筛选器 // $("div").children(".inner").css("color","red") // $("div").find(".iner").css("color","red") //$(".inner").next().css("color","red") //$(".inner").nextAll().css("color","red") // $(".inner").nextUntil(".pp").css("color","red") //$("div").prev().css("color","red") // $("div").prevAll().css("color","red") $("div").prevUntil(".inner").css("color","red") </script> </body> </html>
操作元素(属性,css,文档处理)
属性操作
(1)属性 $("").attr(); $("").removeAttr(); $("").prop(); $("").removeProp(); (2)CSS类 $("").addClass(class|fn) $("").removeClass([class|fn]) (3)HTML代码/文本/值 $("").html([val|fn]) $("").text([val|fn]) $("").val([val|fn|arr]) (4)css操作 $("").css("color","red")
实例代码
文档处理
(1)创建一个标签对象 $("<p>") (2)内部插入 $("").append(content|fn) ----->$("p").append("<b>Hello</b>"); $("").appendTo(content) ----->$("p").appendTo("div"); $("").prepend(content|fn) ----->$("p").prepend("<b>Hello</b>"); $("").prependTo(content) ----->$("p").prependTo("#foo"); (3)外部插入 $("").after(content|fn) ----->$("p").after("<b>Hello</b>"); $("").before(content|fn) ----->$("p").before("<b>Hello</b>"); $("").insertAfter(content) ----->$("p").insertAfter("#foo"); $("").insertBefore(content) ----->$("p").insertBefore("#foo");
(4)替换 $("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>"); (5)删除 $("").empty() $("").remove([expr]) (6)复制 $("").clone([Even[,deepEven]])
示例代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div class="c1"> 9 <p>PPPP</p> 10 </div> 11 <button>add</button> 12 <script src="jquery-3.3.1.min.js"></script> 13 <script> 14 $("button").click(function () { 15 // $(".c1").append("<h1>HELLO WORLD</h1>") 16 var $ele=$("<h1>"); 17 $ele.html("hello world"); 18 $ele.css("color","red"); 19 //内部插入 20 // $(".c1").append($ele); 21 // $ele.appendTo(".c1") 22 // $(".c1").prepend($ele); 23 // $ele.prependTo(".c1") 24 //外部插入 25 // $(".c1").after($ele) 26 // $ele.insertAfter(".c1") 27 // $(".c1").before($ele) 28 // $ele.insertBefore(".c1") 29 //替换 30 // $("p").replaceWith($ele) 31 32 //删除与清空 33 //$(".c1").empty() 34 // $(".c1").remove() 35 //clone 36 var $ele2=$(".c1").clone(); 37 $(".c1").after($ele2 ) 38 }) 39 </script> 40 </body> 41 </html>
css操作
$("").css(name|pro|[,val|fn])
(1) 位置
$("").offset([coordinates])
$("").position()
$("").scrollTop([val])
$("").scrollLeft([val])
(2) 尺寸
$("").height([val|fn])
$("").width([val|fn])
$("").innerHeight()
$("").innerWidth()
$("").outerHeight([soptions])
$("").outerWidth([options])
事件
(1)页面载入 ready(fn) //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。 $(document).ready(function(){})
简写: $(function(){}) (2)事件处理 $("").on(eve,[selector],[data],fn) // 在选择元素上绑定一个或多个事件的事件处理函数。 // .on的selector参数是筛选出调用.on方法的dom元素的指定子元素,如: // $('ul').on('click', 'li', function(){console.log('click');})就是筛选出ul下的li给其绑定 // click事件; //给ul绑定事件委托给li临时绑定,这是一种临时绑定 [selector]参数的好处: 好处在于.on方法为动态添加的元素也能绑上指定事件;如: //$('ul li').on('click', function(){console.log('click');})的绑定方式和 //$('ul li').bind('click', function(){console.log('click');})一样;我通过js给ul添加了一个 //li:$('ul').append('<li>js new li<li>');这个新加的li是不会被绑上click事件的 //但是用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,然后动态添加 //li:$('ul').append('<li>js new li<li>');这个新生成的li被绑上了click事件 [data]参数的调用: function myHandler(event) { alert(event.data.foo); } $("li").on("click", {foo: "bar"}, myHandler)
实例代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <ul> 9 <li>1111</li> 10 <li>2222</li> 11 <li>3333</li> 12 <li>4444</li> 13 </ul> 14 <button>add</button> 15 <script src="jquery-3.3.1.min.js"></script> 16 <script> 17 // $("ul li").click(function () { 18 // alert(666) 19 // }) 20 // $("ul li").bind("click",function () { 21 // alert(666) 22 // }) 23 $("ul").on("click","li",function () { 24 alert(9999) 25 }) 26 $("button").click(function () { 27 var $ele=$("<li>") 28 var len=$("ul li").length; 29 $ele.html((len+1)*1111) 30 $("ul").append($ele) 31 }) 32 </script> 33 </body> 34 </html>
动画效果
//显示
show()
//隐藏
hide()
//切换
toggle()
//滑动
slideUp()
slideDown()
slideToggle()
//淡入淡出
fadein()
fadeout()
fadetoggle()
fadeto()
//回调函数
$("button").click(function(){
$("p").hide(1000,function(){
alert($(this).html())
})
扩展与插件
核心方法
$.extend(object) //为JQuery 添加一个静态方法。
$.fn.extend(object) //为JQuery实例添加一个方法。
示例代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <script src="jquery-3.3.1.min.js"></script> 6 <title>Title</title> 7 </head> 8 <body> 9 <p>1</p> 10 <p>2</p> 11 <p>3</p> 12 <p>4</p> 13 <script> 14 // $.extend({ 15 // Myprint:function () { 16 // console.log("hello") 17 // } 18 // }) 19 // $.Myprint() 20 $.fn.extend({ 21 GetText:function () { 22 // for (var i=0;i<this.length;i++) 23 // { 24 // console.log(this[i].innerHTML) 25 // } 26 $.each($(this),function (x,y) { 27 console.log(y.innerHTML) 28 }) 29 30 } 31 }) 32 $("p").GetText() 33 </script> 34 35 </body> 36 </html>
定义作用域
定义私有作用域,插件不受外界的 干扰。
目的是:外部代码不能直接访问插件内部的代码,插件内部的代码不污染全局的变量,在一定程度上解耦插件对运行环境的依赖。
项目实战(京东轮播图)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <script src="jquery-3.3.1.min.js"></script> 6 <title>Title</title> 7 8 <style> 9 .outer{ 10 width: 790px; 11 height: 340px; 12 margin: 80px auto; 13 position: relative; 14 } 15 .img li{ 16 position: absolute; 17 list-style: none; 18 top: 0; 19 left: 0; 20 } 21 .num{ 22 position: absolute; 23 bottom: 20px; 24 left: 200px; 25 /*background-color: #dec7f4;*/ 26 list-style: none; 27 } 28 .num li{ 29 display: inline-block; 30 width: 20px; 31 height: 20px; 32 background-color: white; 33 border-radius: 50%; 34 text-align: center; 35 line-height: 18px; 36 margin-left: 4px; 37 } 38 .btn{ 39 position: absolute; 40 top:50%; 41 width: 30px; 42 height: 60px; 43 background-color: lightgrey; 44 color: white; 45 46 text-align: center; 47 line-height: 60px; 48 font-size: 30px; 49 opacity: 0.3; 50 margin-top: -30px; 51 display: none; 52 } 53 .left{ 54 left: 0; 55 } 56 .right{ 57 right: 0; 58 } 59 .outer:hover .btn{ 60 display: block; 61 } 62 .num .active{ 63 background-color: red; 64 } 65 </style> 66 </head> 67 <body> 68 <div class="outer"> 69 <ul class="img"> 70 <li><a href=""><img src="1.jpg" alt=""></a></li> 71 <li><a href=""><img src="1.jpg" alt=""></a></li> 72 <li><a href=""><img src="1.jpg" alt=""></a></li> 73 <li><a href=""><img src="1.jpg" alt=""></a></li> 74 <li><a href=""><img src="1.jpg" alt=""></a></li> 75 <li><a href=""><img src="1.jpg" alt=""></a></li> 76 </ul> 77 <ul class="num"> 78 <!--<li class="active"></li>--> 79 <!--<li></li>--> 80 <!--<li></li>--> 81 <!--<li></li>--> 82 <!--<li></li>--> 83 <!--<li></li>--> 84 <!--用JS创建--> 85 </ul> 86 <div class="left btn"> < </div> 87 <div class="right btn"> > </div> 88 <script> 89 //通过jQuery自动创建按钮 90 var i = 0; 91 var img_num=$(".img li").length; 92 for(var j=0;j<img_num;j++){ 93 $(".num").append("<li></li>") 94 } 95 $(".num li").eq(0).addClass("active") 96 //手动轮播 97 $(".num li").mouseover(function () { 98 i = $(this).index(); 99 $(this).addClass("active").siblings().removeClass("active") 100 $(".img li").eq(index).stop().fadeIn().siblings().stop().fadeOut() 101 102 }) 103 //自动轮播 104 var c = setInterval(Go_R,1500); 105 106 function Go_R() { 107 if(i==img_num-1) 108 { 109 i=-1 110 } 111 i++; 112 $(".num li").eq(i).addClass("active").siblings().removeClass("active") 113 $(".img li").eq(i).stop().fadeIn(1000).siblings().stop().fadeOut(1000) 114 } 115 function Go_L() { 116 if(i==0) 117 { 118 i=img_num 119 } 120 i--; 121 $(".num li").eq(i).addClass("active").siblings().removeClass("active") 122 $(".img li").eq(i).stop().fadeIn(1000).siblings().stop().fadeOut(1000) 123 } 124 //绑定hover 125 $(".outer").hover(function () { 126 clearInterval(c) 127 },function () { 128 setInterval(Go_R,1500) 129 }) 130 //button加定播 131 $(".right").click(Go_R) 132 $(".left").click(Go_L) 133 </script> 134 </div> 135 </body> 136 </html>

浙公网安备 33010602011771号