JQuery —— 一個js函數包
一、選擇器
1、基本選擇器
①id選擇器:# ②class選擇器:. ③標簽名選擇:標簽名
④並列選擇:用,隔開 ⑤後代選擇:用空格隔開
代碼用法展示:
<title></title> <script src="js/jquery-1.7.2.min.js"></script> </head> <body> <form id="form1" runat="server"> <div id="div1"> <a>aaaaa</a> <%--a標記--%> </div> <div id="div2"></div> <div class="div"></div> <div></div> </form> </body> </html> <%-- $ JQuery標志性符--%> <script type="text/javascript" > $("#div1").css("background-color", "red"); //id選擇,$("#div1")相當於js中docunment.getElementById("div1"),下面其他類似 $(".div2").css("background-color", "red"); //class選擇 $("div").css("background-color", "red"); //標簽選擇 $("#div1,#div2").css("background-color", "red"); //並列選擇,用逗號隔開 $("#div1 a").css("background-color", "red"); //後代選擇,用空格隔開 </script>基本選擇器
2、過濾選擇器
(1)、基本過濾
①首個::first ②尾個::last ③任意個::eq(索引號) ④大於::gt(索引號)
⑤小於::lt(索引號) ⑥排除::not(選擇器) ⑦奇數:odd ⑧偶數:even
(2)、屬性過濾
①屬性名過濾:[屬性名]
②屬性值過濾:[屬性名=屬性值]或[屬性名!=屬性值]
(3)、內容過濾
①文字過濾::contains(“字符串”)
②子元素過濾::has(選擇器)
代碼用法展示:
<script src="js/jquery-1.7.2.min.js"></script> </head> <body> <form id="form1" runat="server"> <div class="div">aaa</div> <div class="div">bbb</div> <div class="div" hehe="aaa" he="aaa"><a></a></div> <div class="div" hehe="bbb">bbb</div> <div class="div">aaa</div> <div class="div"><a></a></div> </form> </body> </html> <script type="text/javascript" > //基本過濾 $(".div:first").css("background-color", "red"); //取首個 $(".div:last").css("background-color", "red"); //取最後一個 $(".div:eq(2)").css("background-color", "red"); //取任意個, :eq(索引號) 或者$(".div").eq(2).css("background-color", "red");——重點 $(".div:gt(2)").css("background-color", "red"); //:gt(索引號),取大於該索引號的 $(".div:lt(2)").css("background-color", "red"); //:lt(索引號),取小於該索引號的 $(".div:not(.div:eq(2))").css("background-color", "red"); //:not(“選擇器”),排除這一個,選剩余的 $(".div:odd").css("background-color", "red"); //:odd,選索引為奇數的 $(".div:even").css("background-color", "red"); //:even,選索引為偶數的 //屬性過濾 $(".div[he]").css("background-color", "red"); //[屬性名],選有該屬性名的 $(".div[hehe=aaa]").css("background-color", "red"); //[屬性名=屬性值],選有該屬性名且是此屬性值的 $(".div[hehe!=bbb]").css("background-color", "red"); //[屬性名!=屬性值],選有該屬性名的且屬性值不是此的 //內容過濾 $(".div:contains('a')").css("background-color", "red"); //:contains('字符串'),選取包含該字符串的——根據文字 $(".div:has(a)").css("background-color", "red"); //:has(“選擇器”),選取包含該選擇器的——根據選擇器 </script>過濾選擇器
二、事件
1、常規事件——把js事件前面的on去掉
比如:js:onclick——JQuery:click
2、復合事件
①houver(function(){},functiaon(){})——相當於把mouseover()mouseout()合二為一
②toggle(function(){},function(){},....)——點擊事件循環執行,具體看下面的代碼用法展示
代碼用法展示:
<script src="js/jquery-1.7.2.min.js"></script> </head> <body> <form id="form1" runat="server"> <div class="div">aaa</div> <div class="div">bbb</div> <div class="div"><a></a></div> <div class="div">bbb</div> <div class="div">aaa</div> <div class="div"><a></a></div> </form> </body> </html> <script type="text/javascript" > //單擊事件 $(".div").click(function () { alert('aaa'); }); //雙擊事件 $(".div").dblclick(function () { alert('aaa'); }); //復合事件hover——相當於把mouseover()mouseout()合二為一 $(".div").hover(function () { $(this).css("background-color","red"); }, function () { $(this).css("background-color", "blue"); }); //復合事件toggle——點擊事件循環執行,下面代碼中即點擊div,循環為div更換背景色 $(".div").toggle(function () { $(this).css("background-color", "red"); }, function () { $(this).css("background-color", "yellow"); }, function () { $(this).css("background-color", "blue"); }, function () { $(this).css("background-color", "green"); }, function () { $(this).css("background-color", "orange"); }); </script>常規和復合事件
3、事件冒泡(冒泡事件)——冒泡部分轉載自:http://www.cnblogs.com/jiqing9006/archive/2012/09/11/2679831.html
冒泡事件就是點擊子節點,會向上觸發父節點,祖先節點的點擊事件。
解析:下面是html代碼部分:
<body> <div id="content"> 外層div元素 <span>內層span元素</span> 外層div元素 </div> <div id="msg"></div> </body>
對應的jQuery代碼如下:
<script type="text/javascript"> $(function(){ // 為span元素綁定click事件 $('span').bind("click",function(){ var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>";//獲取html信息 $('#msg').html(txt);// 設置html信息 }); // 為div元素綁定click事件 $('#content').bind("click",function(){ var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>"; $('#msg').html(txt); }); // 為body元素綁定click事件 $("body").bind("click",function(){ var txt = $('#msg').html() + "<p>body元素被點擊.<p/>"; $('#msg').html(txt); }); }) </script>冒泡Jquery
當點擊span時,會觸發div與body 的點擊事件。點擊div時會觸發body的點擊事件。
如何防止這種冒泡事件發生呢?
修改如下:
<script type="text/javascript"> $(function(){ // 為span元素綁定click事件 $('span').bind("click",function(event){ var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>"; $('#msg').html(txt); event.stopPropagation(); // 阻止事件冒泡 }); // 為div元素綁定click事件 $('#content').bind("click",function(event){ var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>"; $('#msg').html(txt); event.stopPropagation(); // 阻止事件冒泡 }); // 為body元素綁定click事件 $("body").bind("click",function(){ var txt = $('#msg').html() + "<p>body元素被點擊.<p/>"; $('#msg').html(txt); }); }) </script>阻止冒泡一
event.stopPropagation(); // 阻止事件冒泡
或者通過return false來處理。
<script type="text/javascript"> $(function(){ // 為span元素綁定click事件 $('span').bind("click",function(event){ var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>"; $('#msg').html(txt); return false; }); // 為div元素綁定click事件 $('#content').bind("click",function(event){ var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>"; $('#msg').html(txt); return false; }); // 為body元素綁定click事件 $("body").bind("click",function(){ var txt = $('#msg').html() + "<p>body元素被點擊.<p/>"; $('#msg').html(txt); }); }) </script>阻止冒泡二
三、DOM操作
1、操作內容
①表單元素:取值:var s=$(“選擇器”).val()
賦值:$(“選擇器”).val(“值”)
②非標單元素:取值:var s=$(“選擇器”).text(“內容”) var s=$(“選擇器”).text(“內容”)
賦值:$(“選擇器”).text(“內容”) $(“選擇器”).html(“內容”)
代碼用法展示:
<script type ="text/javascript" > //$(document).ready相當於js中的window.onload $(document).ready(function () { $("#a").click(function () { $(this).text("bbbb");//改變a標記的顯示內容 }) $("#btn1").click(function () { $("#txt").val("aaaaaa");//改變文本框的顯示內容 $(this).val("bbbb");//改變按鈕的顯示內容 }) }); </script> </head> <body> <form id="form1" runat="server"> <%--操作內容 start--%> <a id="a">aaaaa</a> <input type ="text" id="txt" /> <input type ="button" id="btn1" value ="btn1" /> <%--操作內容 end--%> </form> </body>操作內容
2、操作屬性
①獲取屬性:var s=$(“選擇器”).attr(“屬性名”)
②設置屬性:$(“選擇器”).attr(“屬性名”,”屬性值”)
③更改屬性:$(“選擇器”).attr(“屬性名”,”屬性值”)
④刪除屬性:$(“選擇器”).removeAttr(“屬性名”)
代碼用法展示:
<style type="text/css" > .aaa { border :5px solid red; } .bbb { border :10px solid blue; } </style> </head> <body> <form id="form1" runat="server"> <%--操作屬性 start--%> <input type ="text" id="txt1" /> <input type ="button" id="btn1" value ="btn1" /> <input type ="button" id="btn2" value ="btn2" /> <input type ="button" id="btn3" value ="btn3" /> <%--操作屬性 end--%> </form> </body> </html> <script type ="text/javascript" > $("#btn1").click(function () { $("#txt1").attr("disabled", "disabled");//點擊btn1按鈕,給文本框設置不可用屬性和class $("#txt1").attr("class", "aaa"); }); $("#btn2").click(function () { $("#txt1").removeAttr("disabled").attr("class","bbb");//點擊btn2按鈕,刪除文本框不可用屬性,並且更改class屬性 }); $("#btn3").click(function () { var aa = $("#txt1").attr("class");//點擊btn3按鈕,獲取文本框的class屬性,然後alert彈出看看 alert(aa); }); </script>操作屬性
3、操作樣式(一般用操作屬性就可以)
①操作內聯樣式:獲取樣式:var s=$(“選擇器”).css(“樣式名”)
設置樣式:$(“選擇器”).css(“樣式名”,”值”)、
$("#btn1").click(function () { $("#txt1").css("border", " 5px solid red");});
②操作樣式表的class:添加class:$(“選擇器”).addClass(“class名”)
移除class:$(“選擇器”).removeClass(“class名”)
添加移除交替class:$(“選擇器”).toggleClass(“class名”)
4、操作相關元素
①查找:父輩、前輩:parent() parents(“選擇器”)
子代、後代:children(“選擇器”) find(“選擇器”)
兄弟:哥哥:prev() prevAll(“選擇器”)
弟弟:next() next All(“選擇器”)
用法代碼展示:
<script src="js/jquery-1.7.2.min.js"></script> <style type="text/css" > #div1 { width :400px; height :400px; background-color :red; } #div2 { width :300px; height :300px; background-color :yellow; } #div3 { width :200px; height :200px; background-color :blue; } #div4 { width :100px; height :100px; background-color :green; } </style> </head> <body> <form id="form1" runat="server"> <div id="div1"> <div id="div2"> <div id="div3"> <div id="div4"></div> </div> </div> </div> <div id="div5"></div> <div id="div6"></div> <div id="div7"></div> </form> </body> </html> <script type="text/javascript" > $("#div4").click(function () { var p = $(this).parent();//查找div4的父級 var p = $(this).parent().parent();//查找div4的父級的父級 var p = $(this).parents("#div2");//若知道前輩的id或name,可以用parents("選擇器") }); $("#div1").click(function () { var p = $(this).children("#div2");//查找div1的子級,children("#div3")是找不出來的,div3是div1子集的子集 var p = $(this).find("#div3");//查找div1的後代div3 }); //div1、div5、div6、div7平級 $("#div1").click(function () { var p = $(this).next();//查找div1的弟弟,可以next().next() var p = $(this).nextAll("#div6");//nextAll("選擇器"),前提知道需要查找的弟弟的選擇器 }); $("#div7").click(function () { var p = $(this).prev();//查找div1的哥哥,可以prev().prev() var p = $(this).prevAll("#div6");//prevtAll("選擇器"),前提知道需要查找的哥哥的選擇器 }); </script>查找
②操作:新建:$(“html字符串”)
添加:appen(jquery對象或字符串)——某個元素內部添加
after(…)——下部平級添加
before(…)——上部平級添加
移除:empty()——清空內部全部元素
remove()——清空元素
復制:clone()
代碼用法展示:例子:模仿制作一個微博或者其他的評論頁面
<script src="js/jquery-1.7.2.min.js"></script> <style type="text/css" > #div1 { width :400px; height :400px; background-color :red; } #div2 { width :300px; height :300px; background-color :yellow; } #div3 { width :200px; height :200px; background-color :blue; } #div4 { width :100px; height :100px; background-color :green; } </style> </head> <body> <form id="form1" runat="server"> <div id="div1"> <div id="div2"> <div id="div3"> <div id="div4"></div> </div> </div> </div> <div id="div5"></div> <div id="div6"></div> <div id="div7"></div> </form> </body> </html> <script type="text/javascript" > $("#div4").click(function () { var p = $(this).parent();//查找div4的父級 var p = $(this).parent().parent();//查找div4的父級的父級 var p = $(this).parents("#div2");//若知道前輩的id或name,可以用parents("選擇器") }); $("#div1").click(function () { var p = $(this).children("#div2");//查找div1的子級,children("#div3")是找不出來的,div3是div1子集的子集 var p = $(this).find("#div3");//查找div1的後代div3 }); //div1、div5、div6、div7平級 $("#div1").click(function () { var p = $(this).next();//查找div1的弟弟,可以next().next() var p = $(this).nextAll("#div6");//nextAll("選擇器"),前提知道需要查找的弟弟的選擇器 }); $("#div7").click(function () { var p = $(this).prev();//查找div1的哥哥,可以prev().prev() var p = $(this).prevAll("#div6");//prevtAll("選擇器"),前提知道需要查找的哥哥的選擇器 }); </script>css
前台代碼:
總代碼<title></title> <script src="js/jquery-1.7.2.min.js"></script> <link href="css/css7.css" rel="stylesheet" /> </head> <body> <form id="form1" runat="server"> <div id="boss"> <div id="top"> <textarea id="txt1"></textarea> <input type="button" id="btn1" value="提交" /> </div> <div id="bottom"> <%--評論div start--%> <div class="item"> <div class="item_top">aaaaaaaa</div> <div class="item_txt"> aaaaaaa </div> <div class="item_bottom"> 1999-1-1 <input type="button" class="btn_del" value="刪除" /> </div> </div> <%--評論div end--%> </div> </div> </form> </body> </html> <script type="text/javascript"> $("#btn1").click(function () { var oTxt = $("#txt1").val();//取文本框的內容 var aaa = "<div class=\"item\">"; aaa += "<div class=\"item_top\">aaaaaaaa</div><div class=\"item_txt\">"; aaa += oTxt; aaa += "</div><div class=\"item_bottom\">"; aaa += "1999-1-1 <input type=\"button\" value=\"刪除\" class=\"btn_del\" /></div></div>";//拼接評論div的字符串 //判斷是否已有評論 if ($(".item").length <= 0) { $("#bottom").append(aaa);//若沒有,直接在 $("#bottom")內部添加一個 } else { $(".item").eq(0).before(aaa);//若有,從索引為0的一個,上部平級添加 //$(".item").eq(0).after(aaa);//若有,從索引為0的一個,下部平級添加 } }); //live()——未來事件,即給還沒有出現但一定會出現的元素添加事件,只要這個class是.btn_del的元素出現,就會綁上這個事件 $(".btn_del").live("click", function () { $(this).parent().parent().remove(); }); </script>