jQuery [TOC] 詳細內容 1.JQuery介紹 jQuery是一個快速,小巧,功能豐富的JavaScript庫。它通過易於使用的API在大量瀏覽器中運行,使得HTML文檔遍歷和操作,事件處理,動畫和Ajax變得更加簡單。通過多功能性和可擴展性的結合,jQuery改變了數百萬人編寫JavaS ...
目錄
jQuery
詳細內容
1.JQuery介紹
- jQuery是一個快速,小巧,功能豐富的JavaScript庫。它通過易於使用的API在大量瀏覽器中運行,使得HTML文檔遍歷和操作,事件處理,動畫和Ajax變得更加簡單。通過多功能性和可擴展性的結合,jQuery改變了數百萬人編寫JavaScript的方式。
- 操作: 獲取節點元素對象,屬性操作,樣式操作,類名,節點的創建,刪除,添加,替換
2.JQuery的下載安裝
- http://jquery.com/
- 點擊Downloading jQuery
- 下載對應版本,保存本地
3.JQuery的使用
- 獲取jquery對象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="box" class="box">
<p class="active">xjk1</p>
<p class="active">xjk2</p>
<input type="text">
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
console.log($('.box'));//獲取jquery對象
</script>
</body>
</html>
//jQuery.fn.init [div#box.box, prevObject: jQuery.fn.init(1)] 是一個偽數組
1.對象的轉換
//jquery對象轉js節點對象
console.log($('#box')[0]);//jquery對象轉換js節點對象,索引方式
//js對象轉jquery對象
var box = document.getElementById('box');
console.log($(box));
console.log($('#box .active'));//列印出符合id=box,底下class=active所有jquery對象。
$('#box .active').click(function(){//點擊獲取事件
console.log(this);//this 指的是此時的p簽及其內容。
})
4.jQuery的選擇器
1.基本選擇器
- ID選擇器 (#id)
- $(#id)
$('#box').css('color','red');
- 類選擇器(.class )
- $(".類名")
$('.box').css('color','red');
- 標簽選擇器(Element)
- $("標簽")
$('p').css('color','blue');
- 通配符選擇器(*)
- $('*')
$('*').css({'outline':0,'border':0});//去除所有外框。
2.層級選擇器
- 後代選擇器
- 符號:空格
- 範圍:選擇所有的後代元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<span>span標簽1</span>
<p>p標簽</p>
<span>
<span>span標簽2</span>
</span>
<div>
<span>span標簽3</span>
</div>
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
$("div span").css('color','red');//所有div 下的span標簽字體顏色都成為紅色
</script>
</body>
</html>
- 子代選擇器
- 符號:>
- 範圍:選擇器所有的子代元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<span>span標簽1</span>
<p>p標簽</p>
<span>
<span>span標簽2</span>
</span>
<div>
<p><span>span標簽3</span></p>
</div>
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
$('div>span').css('color','red');//div下的所有span標簽 字體都變紅色
</script>
</body>
</html>
- 緊鄰選擇器
- 符號:+
- 範圍:選擇器緊挨著的下一個元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<p>p標簽</p>
<span>
<div>span標簽2</div>
<div>span標簽3</div>
<div>span標簽4</div>
</span>
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
$('p+span').css('color','red');//p簽緊挨著的span簽的子標簽內容
</script>
</body>
</html>
//span標簽2 span標簽3 span標簽4 都變紅
兄弟選擇器
- 符號: ~
- 範圍選擇後的所有兄弟元素。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div>div標簽</div> <p>p標簽1</p> <p>p標簽2 <p>p標簽2的子標簽</p> </p> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> $('div~p').css('color','red'); </script> </body> </html> //p標簽字都稱為紅色
3.基本過濾器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li class="a">
<a href="#">caocao</a>
</li>
<li class="b">liubei</li>
<li class="c">sunquan</li>
<li class="d">guanyu</li>
</ul>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
// console.log($('ul li:eq(1)'));//獲得索引為1的元素
// $('ul li:eq(1)').css('color','red');//改變索引為1的元素的顏色
// console.log($('ul li:lt(3)'));//從0開始獲取索引小於3的元素。是偽數組
// $('ul li:odd').css('color','red');//更改索引為奇數的文本顏色
$('ul li a:first').css('color','yellow');//第一個匹配元素更改顏色
$('ul li:last').css('color','grey');//更改最後一個元素的顏色
</script>
</body>
</html>
4.屬性選擇器
- 例題:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="nihao" class="a">href為nihao</a>
<a href="" class="b">href為空</a>
<a class="c">不包括href的a簽</a>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
// console.log($('a[href]'));//選擇包含href屬性元素
// console.log($("a[href='nihao']"));//選擇href='nihao'的元素
console.log($("a[href!='baidu']"));//選擇href!='baidu'的元素
</script>
</body>
</html>
5.篩選選擇器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li class="out1">1
<ul>
<li class="inner1">內1</li>
<li class="inner2">內2</li>
<li class="inner3">內3</li>
</ul>
</li>
<li class="out2">2</li>
<li class="out3">3</li>
</ul>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
// console.log($('ul').find('li'));//查找ul下所有li標簽,後代
// console.log($('.out1').children('ul'));//查找class=out1 的子標簽ul
console.log($('ul').parent());//查找ul標簽的父標簽
</script>
</body>
</html>
- 獲取文檔,獲取body,獲取html
console.log(document);//獲取文檔
console.log(document.body);//獲取body
console.log(document.documentElement);//獲取html
6.選項卡案例JavaScript對比JQuery
//此為JavaScript實現
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
button.active{
color: red;
}
p{
display: none;
}
p.active{
display: block;
}
</style>
</head>
<body>
<button class="active">熱門</button>
<button>電視影音</button>
<button>電腦</button>
<button>傢具</button>
<p class="active">熱門</p>
<p>電視影音</p>
<p>電腦</p>
<p>傢具</p>
<script type="text/javascript">
// 1.獲取標簽
var btns = document.getElementsByTagName('button');
var ops = document.getElementsByTagName('p');
//2.給每個標簽綁定點擊事件
//ES6可以用let定義塊級作用域變數
for(let i = 0;i < btns.length; i++){
btns[i].onclick = function (){//排他思想
for(var j = 0; j < btns.length; j++){
btns[j].className = '';
ops[j].className = '';
}
//改變button的樣式
this.className = 'active';
//改變p標簽的樣式
ops[i].className = 'active';
}
}
</script>
</body>
</html>
//JQuery實現選項卡
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
button.active{
color: red;
}
p{
display: none;
}
p.active{
display: block;
}
</style>
</head>
<body>
<button class="active">熱門</button>
<button>電視影音</button>
<button>電腦</button>
<button>傢具</button>
<p class="active">家電</p>
<p>電視影音</p>
<p>電腦</p>
<p>傢具</p>
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$('button').click(function(){
// 鏈式編程
//第二個按鈕 索引1
console.log($(this).addClass('active'));
$(this).addClass('active').siblings('button').removeClass('active');
// 獲取當前點擊的元素的索引
console.log($(this).index());
$('p').eq($(this).index()).addClass('active').siblings('p').removeClass('active');
})
</script>
</body>
</html>
5.JQuery的屬性操作
- JQuery的屬性操作模塊分為四個部分:html屬性操作,dom屬性操作,類樣式操作和值操作
- html屬性操作:是對html文檔中的屬性進行讀取,設置和移除操作。比如attr()、removeAttr()。
DOM屬性操作:對DOM元素的屬性進行讀取,設置和移除操作。比如prop()、removeProp()
類樣式操作:是指對DOM屬性className進行添加,移除操作。比如addClass()、removeClass()、toggleClass()
值操作:是對DOM屬性value進行讀取和設置操作。比如html()、text()、val()
1. attr()
設置屬性值或者返回被選元素的屬性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id = 'box' class="boxs">你好</div> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> //獲取值:attr設置一個屬性值的時候,只是獲取值。獲取id值。 var id = $('div').attr('id'); console.log(id);//box //獲取class值 var cla = $('div').attr('class'); console.log(cla);//boxs //設置一個值 $('div').attr('id','thebox');//此時id值為thebox //設置多個值 $('div').attr({'id':'manybox','class':'happy'}); </script> </body> </html>
2.removeAttr()
移除屬性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id = 'box' class="boxs" title="say">你好</div> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> //移除一個屬性 $("#box").removeAttr('title'); //移除多個屬性,如移除class id屬性 $('#box').removeAttr('class id'); </script> </body> </html>
3.prop()
設置或者返回被選元素的屬性和值。
當該方法用於返回屬性值時,則返回第一個匹配元素的值。
當該方法用於設置屬性值時,則為匹配元素集合設置一個或多個屬性/值對。
- 註意不是標簽能加的屬性值不能設置
<body> <div id = 'box' class="boxs" title="say">你好</div> <span></span> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> //設置單個屬性和值 $('span').prop('class','like'); //設置多個屬性和值 $('span').prop({'title':'like','id':"line"}); </script> </body> </html>
attr() 和prop()的區別
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 男<input type="radio" id='test' name="sex" checked/> 女<input type="radio" id='test2' name="sex" /> <button>提交</button> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> $(function(){ //獲取第一個input var el = $('input').first(); //undefined 因為attr是獲取的這個對象屬性節點的值,很顯然此時沒有這個屬性節點,自然輸出undefined console.log(el.attr('style')); // 輸出CSSStyleDeclaration對象,對於一個DOM對象,是具有原生的style對象屬性的,所以輸出了style對象 console.log(el.prop('style')); console.log(document.getElementById('test').style); $('button').click(function(){ alert(el.prop("checked") ? "男":"女"); }) }) </script> </body> </html>
- 什麼時候使用attr(),什麼時候使用prop()?
- 有true,false兩個屬性使用prop();
- 其他則使用attr()
- 什麼時候使用attr(),什麼時候使用prop()?
4. addclass(添加多個類)
為每個匹配的元素添加指定類名
$('div').addClass('box');//追加一個類名到原有的類名
還可以為匹配的元素添加多個類名
$('div').addClass("box box2");//追加多個類名
例題
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
li.temp{
color:red;
}
</style>
</head>
<body>
<ul type="none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
<script>
$('li').addClass('temp');//為每個li標簽添加class='temp'
</script>
</body>
</html>
5. removeClass()
從所有匹配的元素中刪除全部或者指定的類,移除指定類(1個或者多個)。
移除一個
<script> $('div').removeClass('box'); console.log($('div').attr('class'));//box2 </script>
移除全部
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> $('div').removeClass(); console.log($('div').attr('class'));//'' </script>
小案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .active{ color:red; } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> //通過增加類值,改變其CSS渲染 $(function(){ $('ul li').click(function(){ $(this).addClass('active').siblings('li').removeClass('active'); }) }) </script> </body> </html>
6.toggleClass
- 如果存在(不存在)就刪除(添加)一個類。
- 語法:toggleClass('box')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<span>123</span>
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
<script>
//span標簽沒有class屬性,點擊之後span標簽添加class='active'
$('span').click(function(){
$(this).toggleClass('active');
})
</script>
</body>
</html>
7.html
html() 是獲取選中標簽元素中所有的內容
$('#box').html();
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="box">123</div> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> //點擊div獲取事件,將123改為$('#box').html('<a href="https://www.baidu.com">百度一下</a>') $('div').click(function(){ $('#box').html('<a href="https://www.baidu.com">百度一下</a>'); }) </script> </body> </html>
8.text
text() 獲取匹配元素包含的文本內容。
語法:
$('#box').text();
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="box">123</div> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> $('#box').text("<a href='https://www.baidu.com'>百度一下</a>") </script> </body> </html>
9.val
獲取值:val()用於表單控制項中獲取值,比如input textarea select等等。
語法:
$('input').val('設置表單控制項值')
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" value="你好"> <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> <script> $('input').val('替換表單的值'); </script> </body> </html>
6.動畫
1.顯示動畫
方式1:
- 無參數,表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過
display: block;
實現的。
$("div").show();
- 無參數,表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過
方式2:
- 通過控制元素的寬高、透明度、display屬性,逐漸顯示,2秒後顯示完畢。
$('div').show(3000);
方式3
- 和方式二類似,也是通過控制元素的寬高、透明度、display屬性,逐漸顯示。
- 參數:
- slow 慢 600ms
- normal 正常 400ms
- fast 快 200ms
$("div").show("slow");
方式4
- 動畫執行完後,立即執行回調函數
//show(毫秒值,回調函數; $("div").show(5000,function () { alert("動畫執行完畢!"); });
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div{ width: 200px; height: 200px; background-color: red; display:none; } </style> </head> <body> <div></div> <script type="text/javascript" src="js/jquery.js"></script> <script> $('div').show(3000,function(){ alert('動畫執行完畢'); }); </script> </body> </html>
2.隱藏動畫
$(div).hide();
$(div).hide(1000);
$(div).hide('slow');
$(div).hide(1000,function())
3.實現點擊按鈕顯示盒子,再點擊按鈕隱藏盒子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
//css設置盒子寬高,背景色,display預設不顯示
#box{
width: 200px;
height: 200px;
background-color: red;
display: none;
}
</style>
</head>
<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('顯示');
});
}
})
</script>
</body>
</html>
4.開關方式顯示隱藏動畫
- ('#box').toggle(3000,function(){});
$('#btn').click(function(){
$('#box').toggle(3000,function(){
$(this).text('盒子出來了');
if ($('#btn').text()=='隱藏') {
$('#btn').text('顯示');
}else{
$('#btn').text('隱藏');
}
});
})
5.滑入和滑出
滑入
$('#box').slideDown(speed, 回調函數);
滑出
$('#box').slideUp(speed, 回調函數);
滑入滑出切換動畫
$('#box').slideToggle(speed, 回調函數);
6.淡入淡出動畫
淡入
$('#box').fadeIn(speed, 回調函數);
淡出
$('#box').fadeOut(speed, 回調函數);
淡入淡出
$('#box').fadeToggle('fast', callback);
6.自定義動畫
語法:
$(selector).animate({params}, speed, callback);
作用:執行一組CSS屬性的自定義動畫。
- 第一個參數表現:要執行動畫的CSS屬性(必選)
- 第二個參數表示:執行動畫時長(可選)
- 第三個參數表示:動畫執行完後,立即執行的回調函數(可選)
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
position: absolute;
left: 20px;
top: 30px;
width: 100px;
height: 100px;
background-color: green;
}
</style>
<script src="js/jquery.js"></script>
<script>
jQuery(function () {
$("button").click(function () {
var json = {"width": 500, "height": 500, "left": 300, "top": 300, "border-radius": 100};
var json2 = {
"width": 100,
"height": 100,
"left": 100,
"top": 100,
"border-radius": 100,
"background-color": "red"
};
//自定義動畫
$("div").animate(json, 1000, function () {
$("div").animate(json2, 1000, function () {
alert("動畫執行完畢!");
});
});
})
})
</script>
</head>
<body>
<button>自定義動畫</button>
<div></div>
</body>
</html>