我與前端之間不得不說的三天兩夜之jQuery
阿新 • • 發佈:2017-10-08
其中 microsoft back 事件綁定 它的 委派 世界 頻繁 -c 前端基礎之jquery
dom對象和jquery對象的區別
3.1.2 層級選擇器
3.1.4 屬性選擇器
四 操作元素(屬性,css,文檔處理)
來自為知筆記(Wiz)
一 jQuery是什麽?
[1] jQuery由美國人John Resig創建,至今已吸引了來自世界各地的眾多 javascript高手加入其team。
[2] jQuery是繼prototype之後又一個優秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!
[3] 它是輕量級的js庫(壓縮後只有21k) ,這是其它的js庫所不及的,它兼容CSS3,還兼容各種瀏覽器
[4] jQuery是一個快速的,簡潔的javaScript庫,使用戶能更方便地處理HTMLdocuments、events、實現動畫效果,並且方便地為網站提供AJAX交互。
[5] jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。
二 什麽是jQuery對象?
jQuery 對象就是通過jQuery包裝DOM對象後產生的對象。jQuery 對象是 jQuery 獨有的. 如果一個對象是 jQuery 對象, 那麽它就可以使用 jQuery 裏的方法: $(“#test”).html();$("#test").html() 意思是指:獲取ID為test的元素內的html代碼。其中html()是jQuery裏的方法 這段代碼等同於用DOM實現代碼: document.getElementById(" test ").innerHTML; 雖然jQuery對象是包裝DOM對象後產生的,但是jQuery無法使用DOM對象的任何方法,同理DOM對象也不能使用jQuery裏的方法.亂使用會報錯 約定:如果獲取的是 jQuery 對象, 那麽要在變量前面加上$. var $variable = jQuery 對象 var variable = DOM 對象 $variable[0]:jquery對象轉為dom對象 $("#msg").html(); $("#msg")[0].innerHTML
jquery的基礎語法:$(selector).action()
參考:
http://jquery.cuishifeng.cn/dom對象和jquery對象的區別
輸出結果:這樣調用才是正確的方式*****註意jquery對象和dom對象下的方法和屬性不能混用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p id="p1">PPP</p> <div class="c1">DIV</div> <div class="c1">DIV</div> <div class="c1">DIV</div> <div>DIV</div> <script src="jquery-3.2.1.js"></script> <script> // $("#p1") ------>jquery對象 var ele=document.getElementById("p1"); //ele-----> DOM對象 console.log(ele.innerHTML); console.log($("#p1").html()); // jquery對象與DOM對象下的方法和屬性不能混用 </script> </body> </html>
三 尋找元素(選擇器和篩選器)
3.1 選擇器
3.1.1 基本選擇器
$("*") $("#id") $(".class") $("element") $(".class,p,div")
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="p1">PPP</p>
<div class="c1">DIV</div>
<div class="c1">DIV</div>
<div class="c1">DIV</div>
<div>DIV</div>
<script src="jquery-3.2.1.js"></script>
<script>
$("#p1").css({"color":"red","fontSize":"35px"}); //通過id值來定位
$(".c1").css("color","green") //通過class屬性來定位
$("div").css("background-color","gold") //通過標簽屬性來定位
$("*").css("color","green") // 通配符表示所有
</script>
</body>
</html>
3.1.2 層級選擇器
$(".outer div") $(".outer>div") $(".outer+div") $(".outer~div")
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<script src="jquery-3.2.1.js"></script>
<script>
$(".outer p").css("color","red") //後代選擇器指後面所有的p標簽兒子孫子之類的標簽
$(".outer>p").css("color","red") //子代選擇器指兒子這代的p標簽
</script>
</body>
</html>
3.1.3 基本篩選器
$("li:first") $("li:eq(2)") $("li:even") $("li:gt(1)")
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<ul class="box">
<li class="item">111</li>
<li class="item">222</li>
<li class="item">333</li>
<li class="item">444</li>
<li class="item">555</li>
<li class="item">666</li>
</ul>
<script src="jquery-3.2.1.js"></script>
<script>
//======================篩選器
//根據index的索引值來進行定位
$(".box .item:eq(5)").css("color","red") //eq是等於,eq(5)表示是等於5的索引值的標簽變為紅色
$(".box .item:lt(4)").css("color","red") //lt是小於,lt(4)表示是小於4的索引值的標簽變為紅色
$(".box .item:gt(3)").css("color","red") //gt是大於,ge(3)表示是大於3的索引值的標簽變為紅色
$(".box .item:odd").css("color","red") //odd是取步長,空一個取一個
</script>
</body>
</html>
3.1.4 屬性選擇器
$(‘[id="div1"]‘) $(‘["alex="sb"][id]‘)
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<ul class="box">
<li class="item">111</li>
<li class="item">222</li>
<li class="item">333</li>
<li class="item">444</li>
<li class="item">555</li>
<li class="item">666</li>
</ul>
<div egon="sb">egon</div>
<div egon="sb" class="c1">egon2</div>
<script src="jquery-3.2.1.js"></script>
<script>
// ==================屬性選擇器
$("[egon=‘sb‘]").css("color","red") //只包含自定義的egon=sb的標簽就變紅
$("[egon=‘sb‘][class]").css("color","red") //根據後面的class來定位標簽 所有這個是後面的egon2字體變紅
</script>
</body>
</html>
3.1.5 表單選擇器
$("[type=‘text‘]")----->$(":text") 註意只適用於input標簽 : $("input:checked")
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<ul class="box">
<li class="item">111</li>
<li class="item">222</li>
<li class="item">333</li>
<li class="item">444</li>
<li class="item">555</li>
<li class="item">666</li>
</ul>
<div egon="sb">egon</div>
<div egon="sb" class="c1">egon2</div>
<input type="text">
<input type="text">
<input type="text">
<input type="checkbox">
<script src="jquery-3.2.1.js"></script>
<script>
// 針對input表單
$("[type=‘text‘]").css("border","1px solid red"); //這個完整的寫法
$(":text").css("border","1px solid green"); //這個是簡寫,但是只針對input表單兩個方法的效果是一樣的
</script>
</body>
</html>
推薦寫法:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<ul class="box">
<li class="item">111</li>
<li class="item">222</li>
<li class="item">333</li>
<li class="item">444</li>
<li class="item">555</li>
<li class="item">666</li>
</ul>
<script src="jquery-3.2.1.js"></script>
<script>
var x=3;
$("ul li:eq(x)").css("color","red"); //想通過一個靈活的變量來定位標簽,但這種方法是錯誤的
</script>
</body>
</html>
輸出結果:結果沒有一點變化 推薦寫法:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="outer">
<div class="inner">
<p>p3</p>
<div>DIV</div>
</div>
<p>p2</p>
</div>
<p>p1</p>
<ul class="box">
<li class="item">111</li>
<li class="item">222</li>
<li class="item">333</li>
<li class="item">444</li>
<li class="item">555</li>
<li class="item">666</li>
</ul>
<div egon="sb">egon</div>
<div egon="sb" class="c1">egon2</div>
<input type="text">
<input type="text">
<input type="text">
<input type="checkbox">
<script src="jquery-3.2.1.js"></script>
<script>
var x=3;
//$("ul li:eq(x)").css("color","red");
$("ul li").eq(x).css("color","red"); // 推薦寫法
</script>
</body>
</html>
輸出結果:可以看到索引值為3的標簽變了 3.1.6 表單屬性選擇器
:enabled
:disabled
:checked
:selected
<body>
<form>
<input type="checkbox" value="123" checked>
<input type="checkbox" value="456" checked>
<select>
<option value="1">Flowers</option>
<option value="2" selected="selected">Gardens</option>
<option value="3" selected="selected">Trees</option>
<option value="3" selected="selected">Trees</option>
</select>
</form>
<script src="jquery.min.js"></script>
<script>
// console.log($("input:checked").length); // 2
// console.log($("option:selected").length); // 只能默認選中一個,所以只能lenth:1
$("input:checked").each(function(){
console.log($(this).val())
})
</script>
</body>
3.2 篩選器
3.2.1 過濾篩選器
$("li").eq(2) $("li").first() $("ul li").hasclass("test")
3.2.2 查找篩選器
查找子標簽: $("div").children(".test") $("div").find(".test")
向下查找兄弟標簽: $(".test").next() $(".test").nextAll()
$(".test").nextUntil()
向上查找兄弟標簽: $("div").prev() $("div").prevAll()
$("div").prevUntil()
查找所有兄弟標簽: $("div").siblings()
查找父標簽: $(".test").parent() $(".test").parents()
$(".test").parentUntil()
示例:
查找子標簽:示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="c1">
<div class="c3">
DIV
<div class="c4">
<p class="p1">P1</p>
</div>
</div>
<p>P2</p>
</div>
[.c4,.c3,]
<div class="c1">
<p class="item" id="d1">p3</p>
<p class="item">p3</p>
<p class="item">p3</p>
<p class="item" id="d4">p3</p>
<p class="item">p3</p>
</div>
<div id="c1" egon="123"></div>
<script src="jquery-3.2.1.js"></script>
<script>
//================================================== find:找所有後代 children:找所有子代
$(".c1").children("p").css("border","1px solid red"); //找所有的子代
$(".c1").find("p").css("border","1px solid red") //找所有的後代
向下查找兄弟標簽:示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="c1">
<div class="c3">
DIV
<div class="c4">
<p class="p1">P1</p>
</div>
</div>
<p>P2</p>
</div>
[.c4,.c3,]
<div class="c1">
<p class="item" id="d1">p3</p>
<p class="item">p3</p>
<p class="item">p3</p>
<p class="item" id="d4">p3</p>
<p class="item">p3</p>
</div>
<div id="c1" egon="123"></div>
<script src="jquery-3.2.1.js"></script>
<script>
// jquery支持鏈式操作
//==========================================找兄弟標簽
// next
$("#d1").next().css("color","red").next().css("color","green"); //向下查找兄弟標簽,還可以通過這個兄弟標簽在往下找兄弟標簽
$("#d1").nextAll().css("color","red"); //向下找所有的兄弟標簽
$("#d1").nextUntil("#d4").css("color","red"); //向下找兄弟標簽直到找到指定的兄弟標簽停止,但是不顧頭和尾,只有中間一段標簽會有作用
</script>
</body>
</html>
向上查找兄弟標簽:
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="c1">
<div class="c3">
DIV
<div class="c4">
<p class="p1">P1</p>
</div>
</div>
<p>P2</p>
</div>
[.c4,.c3,]
<div class="c1">
<p class="item" id="d1">p3</p>
<p class="item">p3</p>
<p class="item">p3</p>
<p class="item" id="d4">p3</p>
<p class="item">p3</p>
</div>
<div id="c1" egon="123"></div>
<script src="jquery-3.2.1.js"></script>
<script>
//prev
$("#d4").prev().css("color","red"); //向上找兄弟標簽
$("#d4").prevAll().css("color","red") //向上找所有的兄弟標簽
$("#d4").prevUntil("#d1").css("color","red") // 向上找到指定位置的兄弟標簽不顧頭和尾。
</script>
</body>
</html>
查找所有的兄弟標簽
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="c1">
<div class="c3">
DIV
<div class="c4">
<p class="p1">P1</p>
</div>
</div>
<p>P2</p>
</div>
[.c4,.c3,]
<div class="c1">
<p class="item" id="d1">p3</p>
<p class="item">p3</p>
<p class="item">p3</p>
<p class="item" id="d4">p3</p>
<p class="item">p3</p>
</div>
<div id="c1" egon="123"></div>
<script src="jquery-3.2.1.js"></script>
<script>
//siblings
$("#d4").siblings().css("color","red"); //查找自己的所有的兄弟標簽
</script>
</body>
</html>
輸出結果: 查找父標簽:示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="c1">
<div class="c3">
<!--DIV-->
<div class="c4">
<p class="p1">P1</p>
</div>
</div>
<p>P2</p>
</div>
[.c4,.c3,]
<div class="c2">
<p class="item" id="d1">p3</p>
<p class="item">p3</p>
<p class="item">p3</p>
<p class="item" id="d4">p3</p>
<p class="item">p3</p>
</div>
<div id="c1" egon="123"></div>
<script src="jquery-3.2.1.js"></script>
<script>
// ===============================================找父標簽
console.log($(".p1").parent().parent().attr("class")) //找父級標簽,可以通過找父級標簽找到爺爺級標簽
$(".p1").parents().css("color","red") //找所有的父級標簽
$(".p1").parentsUntil(".c1").css("border","1px solid red") //找到指定位置的父級標簽.
</script>
</body>
</html>
四 操作元素(屬性,css,文檔處理)
4.1 事件
頁面載入
ready(fn) // 當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數。
$(document).ready(function(){}) -----------> $(function(){})
事件綁定
//語法: 標簽對象.事件(函數)
eg: $("p").click(function(){})
示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul id="box">
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="ite,m46">111</li>
</ul>
<button class="add">ADD</button>
<button class="releave">off</button>
<script src="jquery-3.2.1.js"></script>
<script>
// 一個標簽對象.on事件=function(){} //js對象的示例
// 一個jquery對象(集合對象).事件(function(){})
//
$(".item").click(function (){ //js裏面是on加上click在這裏不用on了
alert(123)
});
$(".add").click(function () {
$("#box").append("<div class=‘item‘>444</div>")
});
</script>
</body>
</html>
輸出結果:想通過add來添加的數也加上時間試試bind方法示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul id="box">
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="ite,m46">111</li>
</ul>
<button class="add">ADD</button>
<button class="releave">off</button>
<script src="jquery-3.2.1.js"></script>
<script>
//廢棄的bind方法
$(".item").bind("click",function () {
alert(123)
});
//
$(".add").click(function () {
$("#box").append("<div class=‘item‘>444</div>")
});
</script>
</body>
</html>
輸出結果:發現點111有事件,但是點add出現的444還是沒反應。 最後用on方法示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul id="box">
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="ite,m46">111</li>
</ul>
<button class="add">ADD</button>
<button class="releave">off</button>
<script src="jquery-3.2.1.js"></script>
<script>
// on方法
$("#box").on("click",".item",function () { //通過父標簽#box,on("事件名稱","定義具體操作標簽"),方法(){事件}
alert($(this).html());
alert($(this).index());
});
$(".add").click(function () {
$("#box").append("<div class=‘item‘>444</div>")
});
</script>
</body>
</html>
輸出結果:最後用on方法解決了 哎這個方法解決了,想通過一個按鈕來把事件給停止掉示例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul id="box">
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="item">111</li>
<li class="ite,m46">111</li>
</ul>
<button class="add">ADD</button>
<button class="releave">off</button>
<script src="jquery-3.2.1.js"></script>
<script>
$("#box").on("click",".item",function () {
alert($(this).html());
// alert($(this).index());
});
//
$(".add").click(function () {
$("#box").append("<div class=‘item‘>444</div>")
});
$(".releave").click(function () { // 給添加的按鈕添加事件
$("#box").off("click") //通過off方法去除了click事件。
});
</script>
</body>
</html>
輸出結果:可以看到我再點沒觸發事件了 事件委派:
$("").on(eve,[selector],[data],fn) // 在選擇元素上綁定一個或多個事件的事件處理函數。
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<hr>
<button id="add_li">Add_li</button>
<button id="off">off</button>
<script src="jquery.min.js"></script>
<script>
$("ul li").click(function(){
alert(123)
});
$("#add_li").click(function(){
var $ele=$("<li>");
$ele.text(Math.round(Math.random()*10));
$("ul").append($ele)
});
// $("ul").on("click","li",function(){
// alert(456)
// })
$("#off").click(function(){
$("ul li").off()
})
</script>
事件切換
hover事件:
一個模仿懸停事件(鼠標移動到一個對象上面及移出這個對象)的方法。這是一個自定義的方法,它為頻繁使用的任務提供了一種“保持在其中”的狀態。
over:鼠標移到元素上要觸發的函數
out:鼠標移出元素要觸發的函數
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin: 0;
padding: 0;
}
.test{
width: 200px;
height: 200px;
background-color: wheat;
}
</style>
</head>
<body>
<div class="test"></div>
</body>
<script src="jquery.min.js"></script>
<script>
// function enter(){
// console.log("enter")
// }
// function out(){
// console.log("out")
// }
// $(".test").hover(enter,out)
$(".test").mouseenter(function(){
console.log("enter")
});
$(".test").mouseleave(function(){
console.log("leave")
});
</script>
</html>
4.2 屬性操作
--------------------------CSS類
$("").addClass(class|fn)
$("").removeClass([class|fn])
--------------------------屬性
$("").attr();
$("").removeAttr();
$("").prop();
$("").removeProp();
--------------------------HTML代碼/文本/值
$("").html([val|fn])
$("").text([val|fn])
$("").val([val|fn|arr])
---------------------------
$("#c1").css({"color":"red","fontSize":"35px"})
來自為知筆記(Wiz)
我與前端之間不得不說的三天兩夜之jQuery