一. 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;
$(variable): dom對象轉換為jQuery對象
variable.innerHTML;
$(variable).html();
jquery的基礎語法:$(selector).action()
jQuery的入口函數:
//方式一: //1.文檔加載完畢,圖片不加載的時候,就可以執行這個函數。 $(document).ready(function () { alert(1); }) //方式二:(寫法一的簡潔版) //2.文檔加載完畢,圖片不加載的時候,就可以執行這個函數。 $(function () { alert(1); }); //方式三: //3.文檔加載完畢,圖片也加載完畢的時候,在執行這個函數。 $(window).ready(function () { alert(1); })
三. 尋找元素(選擇器和篩選器)
1. 選擇器
a. 基本選擇器
$("*") //通配符
$("#id") // id選擇器
$(".class") // class選擇器
$("element") // 標簽選擇器
b. 層級選擇器
$(".father div") // 后代選擇器
$(".father>div") // 子代選擇器
$(".father,div") // 並集選擇器
$("div.father") //交集選擇器
c. 基本篩選器
$("li:first")
$("li:eq(2)")
$("li:even") // 索引為偶數
$("li:odd") // 索引為奇數
$("li:gt(1)")
$("li:lt(2)")
d. 屬性選擇器
$('[id="div1"]')
$('["alex="sb"][id]')
e. 表單選擇器
$('input[type=checkbox]:checked') // 獲取選中CheckBox項
$("[type='text']")----->$(":text") //注意只適用於input標簽 : $("input:checked")
2. 篩選器
a. 過濾篩選器
$("li").eq(2)
$("li").first()
$("ul li").hasclass("test")
b. 查找篩選器

$("#box").find(".box1");
$("#box").siblings(); // 所有兄弟標簽,不包括自己。
四. 操作元素(屬性,css,文檔處理)
--------------------------屬性 $("").attr(); $("").removeAttr(); $("").prop(); $("").removeProp(); --------------------------CSS類 $("").addClass(class|fn) $("").removeClass([class|fn]) --------------------------HTML代碼/文本/值 $("").html([val|fn]) $("").text([val|fn]) $("").val([val|fn|arr]) --------------------------- $("").css("color","red")
a. attr()
設置屬性值或者 返回被選元素的屬性值
//獲取值:attr()設置一個屬性值的時候 只是獲取值 var id = $('div').attr('id') console.log(id) var cla = $('div').attr('class') console.log(cla) //設置值 //1.設置一個值 設置div的class為box $('div').attr('class','box') //2.設置多個值,參數為對象,鍵值對存儲 $('div').attr({name:'hahaha',class:'happy'})
b. removeAttr()
移除屬性
//刪除單個屬性 $('#box').removeAttr('name'); $('#box').removeAttr('class'); //刪除多個屬性 $('#box').removeAttr('name class');
c. prop()
prop() 方法設置或返回被選元素的屬性和值。
當該方法用於返回屬性值時,則返回第一個匹配元素的值。
當該方法用於設置屬性值時,則為匹配元素集合設置一個或多個屬性/值對。
語法:
返回屬性的值:
$(selector).prop(property)
設置屬性和值:
$(selector).prop(property,value)
設置多個屬性和值:
$(selector).prop({property:value, property:value,...})
注意:
//對於HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。 //對於HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。 //像checkbox,radio和select這樣的元素,選中屬性對應“checked”和“selected”,這些也屬於固有屬性,因此 //需要使用prop方法去操作才能獲得正確的結果。
d. addClass()
為每個匹配的元素添加指定的類名。
$('div').addClass("box");//追加一個類名到原有的類名
還可以為匹配的元素添加多個類名
$('div').addClass("box box2");//追加多個類名
e. removeClass()
從所有匹配的元素中刪除全部或者指定的類。
移除指定的類(一個或多個)
$('div').removeClass('box');
移除全部的類
$('div').removeClass();
f. toggleClass()
如果存在(不存在)就刪除(添加)一個類。
語法:toggleClass('box')
$('span').click(function(){
//動態的切換class類名為active
$(this).toggleClass('active')
})
g. html()
獲取值:
語法;
html() 是獲取選中標簽元素中所有的內容
$('#box').html();
設置值:設置該元素的所有內容 會替換掉 標簽中原來的內容
$('#box').html('<a href="https://www.baidu.com">百度一下</a>');
h. text()
獲取值:
text() 獲取匹配元素包含的文本內容
語法:
$('#box').text();
設置值:
設置該所有的文本內容
$('#box').text('<a href="https://www.baidu.com">百度一下</a>');
注意:值為標簽的時候 不會被渲染為標簽元素 只會被當做值渲染到瀏覽器中
i. val()
獲取值:
val()用於表單控件中獲取值,比如input textarea select等等
設置值:
$('input').val('設置了表單控件中的值');
j. 使用jQuery操作input的value值
表單控件是我們的重中之重,因為一旦牽扯到數據交互,離不開form表單的使用,比如用戶的注冊登錄功能等
那么通過上節知識點我們了解到,我們在使用jquery方法操作表單控件的方法:
$(selector).val()//設置值和獲取值
看如下HTML結構:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form>
<input type="radio" name="sex" value="112"/>男
<!-- 設置cheked屬性表示選中當前選項 -->
<input type="radio" name="sex" value="11" checked=""/>女
<input type="checkbox" value="a" checked=""/>吃飯
<input type="checkbox" value="b"/>睡覺
<input type="checkbox" value="c" checked=""/>打豆豆
<!-- 下拉列表 option標簽內設置selected屬性 表示選中當前 -->
<select name="timespan" id="timespan" class="Wdate">
<option value="1">8:00-8:30</option>
<option value="2" selected="">8:30-9:00</option>
<option value="3">9:00-9:30</option>
</select>
<input type="text" name="" id="" value="111"/>
</form>
</body>
</html>
頁面展示效果:

操作表單控件代碼如下:
<script src="jQuery.js"></script> <script> $(function () { // 一、獲取值 //1.獲取單選框被選中的value值 console.log($('input[type=radio]:checked').val()); //2.復選框被選中的value,獲取的是第一個被選中的值 console.log($('input[type=checkbox]:checked').val()); //3.下拉列表被選中的值 var obj = $("#timespan option:selected"); // 獲取被選中的值 var time = obj.val(); console.log(time); // 獲取文本 var time_text = obj.text(); console.log("val:" + time + " text" + time_text); //4.獲取文本框的value值 console.log($("input[type=text]").val());//獲取文本框中的值 // 二.設置值 //1.設置單選按鈕和多選按鈕被選中項 $('input[type=radio]').val(['112']); $('input[type=checkbox]').val(['a', 'b']); //2.設置下拉列表框的選中值,必須使用select /*因為option只能設置單個值,當給select標簽設置multiple。 那么我們設置多個值,就沒有辦法了,但是使用select設置單個值和多個值都可以 */ $('select').val(['1', '2']); //3.設置文本框的value值 $('input[type=text]').val('試試就試試') }) </script>
示例:全反選
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button onclick="selectall();">全選</button>
<button onclick="cancel();">取消</button>
<button onclick="reverse();">反選</button>
<table border="1">
<tr>
<td><input type="checkbox"></td>
<td>111</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>222</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>444</td>
</tr>
</table>
<script src="jQuery.js"></script>
<script>
function selectall() {
$("table :checkbox").prop("checked", true)
}
function cancel() {
$("table :checkbox").prop("checked", false)
}
function reverse() {
// var idlist = $("table :checkbox");
// for (var i = 0; i < idlist.length; i++) {
// var element = idlist[i];
// var ischecked = $(element).prop("checked");
// if (ischecked) {
// $(element).prop("checked", false)
// } else {
// $(element).prop("checked", true)
// }
//
// }
// jquery循環的兩種方式
//方式一
// li=[10,20,30,40]
// dic={name:"yuan",sex:"male"}
// $.each(li,function(i,j){
// console.log(i,j)
// })
//方式二
// $("tr").each(function(i,j){
// console.log($(this).html())
// })
$("table :checkbox").each(function () {
$(this).prop("checked", !$(this).prop("checked"));
// if ($(this).prop("checked")){
// $(this).prop("checked",false)
// }
// else {
// $(this).prop("checked",true)
// }
});
}
</script>
</body>
</html>
2. 文檔操作
之前js中咱們學習了js的DOM操作,也就是所謂的增刪改查DOM操作。通過js的DOM的操作,大家也能發現,大量的繁瑣代碼實現我們想要的效果。那么jQuery的文檔操作的API提供了便利的方法供我們操作我們的文檔。
看一個之前我們js操作DOM的例子:
var oUl = document.getElementsByTagName('ul')[0]; var oLi = document.createElement('li'); oLi.innerHTML = '趙雲'; oUl.appendChild(oLi);
2.1 插入操作
2.1.1 append()
語法:
父元素.append(子元素)
解釋:追加某元素,在父元素中添加新的子元素。子元素可以為:stirng | element(js對象) | jquery元素
代碼如下:
var oli = document.createElement('li'); oli.innerHTML = '哈哈哈'; $('ul').append('<li>1233</li>'); $('ul').append(oli); $('ul').append($('#app'));
PS:如果追加的是jquery對象那么這些元素將從原位置上消失。簡言之,就是一個移動操作。
2.1.2. appendTo()
語法:
子元素.appendTo(父元素)
解釋:追加到某元素, 子元素添加到父元素
$('<li>天王蓋地虎</li>').appendTo($('ul')).addClass('active')
PS:要添加的元素同樣既可以是stirng 、element(js對象) 、 jquery元素
2.1.3. prepend()
語法:
父元素.prepend(子元素);
解釋:前置添加, 添加到父元素的第一個位置
$('ul').prepend('<li>我是第一個</li>')
2.1.4. prependTo()
語法:
子元素.prependTo(父元素);
解釋:前置添加, 添加到父元素的第一個位置
$('<a href="#">路飛學誠</a>').prependTo('ul')
2.1.5. after()
語法:
兄弟元素.after(要插入的兄弟元素);
要插入的兄弟元素.inserAfter(兄弟元素);
解釋:在匹配的元素之后插入內容
$('ul').after('<h4>我是一個h3標題</h4>')
$('<h5>我是一個h2標題</h5>').insertAfter('ul')
2.1.6. before()
語法:
兄弟元素.before(要插入的兄弟元素);
要插入的兄弟元素.inserBefore(兄弟元素);
解釋:在匹配的元素之前插入內容
$('ul').before('<h3>我是一個h3標題</h3>')
$('<h2>我是一個h2標題</h2>').insertBefore('ul')
2.2. 克隆操作
語法:
$(選擇器).clone();
解釋:克隆匹配的DOM元素
$('button').click(function() {
// 1.clone():克隆匹配的DOM元素
// 2.clone(true):元素以及其所有的事件處理並且選中這些克隆的副本(簡言之,副本具有與真身一樣的事件處理能力)
$(this).clone(true).insertAfter(this);
})
2.3. 修改操作
2.3.1 replaceWith
語法:
$(selector).replaceWith(content);
將所有匹配的元素替換成指定的string、js對象、jquery對象。
//將所有的h5標題替換為a標簽 $('h5').replaceWith('<a href="#">hello world</a>') //將所有h5標題標簽替換成id為app的dom元素 $('h5').replaceWith($('#app'));
2.3.2 replaceAll
語法:
$('<p>哈哈哈</p>')replaceAll('h2');
解釋:替換所有。將所有的h2標簽替換成p標簽。
$('<br/><hr/><button>按鈕</button>').replaceAll('h4')
2.4 刪除操作
2.4.1 remove()
語法:
$(selector).remove();
解釋:刪除節點后,事件也會刪除(簡言之,刪除了整個標簽)
$('ul').remove();
2.4.2 empty()
語法:
$(selector).empty();
解釋:清空選中元素中的所有后代節點
//清空掉ul中的子元素,保留ul $('ul').empty()
五. 動畫效果
1. 顯示動畫(show())
$("div").show();
表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過display: block;實現的。
2. 隱藏動畫(hide())
$("div").hide();
表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過display: none;實現的。
案例一:
要求:點擊button,實現盒子的顯示和隱藏。
方式一:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box {
width: 200px;
height: 200px;
background-color: green;
border: 1px solid red;
display: none;
}
</style>
</head>
<body>
<button id="btn">顯示</button>
<div id="box">
</div>
</body>
<script src="jQuery.js"></script>
<script type="text/javascript">
//jquery 提供了一些方法 show() hide() 控制元素顯示隱藏
var isShow = true;
$('#btn').click(function () {
if (isShow) {
$('#box').show(function () {
$(this).text('盒子出來了');
$('#btn').text('隱藏');
isShow = false;
})
} else {
$('#box').hide(function () {
$(this).text('');
$('#btn').text('顯示');
isShow = true;
})
}
})
</script>
</html>
方式二:
顯示和隱藏的來回切換采用的是toggle()方法:就是先執行show(),再執行hide()。
代碼如下:
$('#btn').click(function(){
$('#box').toggle(function(){
$(this).text('盒子出來了');
if ($('#btn').text()=='隱藏') {
$('#btn').text('顯示');
}else{
$('#btn').text('隱藏');
}
});
})
3. 滑入動畫(slideDown())
類似於生活中的卷簾門
$(selector).slideDown(speed, 回調函數);
解釋:下拉動畫,顯示元素。
注意:省略參數或者傳入不合法的字符串,那么則使用默認值:400毫秒(同樣適用於fadeIn/slideDown/slideUp)
4. 滑出動畫效果(slideUp()):
$(selector).slideUp(speed, 回調函數);
解釋:上拉動畫,隱藏元素。
5. 滑入滑出切換動畫效果(slideToggle)
$(selector).slideToggle(speed, 回調函數);
案例如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
display: none;
background-color: green;
}
</style>
</head>
<body>
<button>滑入</button>
<button>滑出</button>
<button>切換</button>
<div></div>
<script src="jQuery.js"></script>
<script>
$(function () {
//點擊按鈕后產生動畫
$("button:eq(0)").click(function () {
//滑入動畫: slideDown(毫秒值,回調函數[顯示完畢執行什么]);
$("div").slideDown(function () {
alert("動畫執行完畢!");
});
});
//滑出動畫
$("button:eq(1)").click(function () {
//滑出動畫:slideUp(毫秒值,回調函數[顯示完畢后執行什么]);
$("div").slideUp(function () {
alert("動畫執行完畢!");
});
});
$("button:eq(2)").click(function () {
//滑入滑出切換(同樣有四種用法)
$("div").slideToggle();
})
})
</script>
</body>
</html>
6. 淡入動畫效果(fadeIn())
$(selector).fadeIn(speed, callback);
作用:讓元素以淡淡的進入視線的方式展示出來。
7. 淡出動畫效果(fadeOut())
$(selector).fadeOut(speed,callback);
作用:讓元素以漸漸消失的方式隱藏起來
8. 淡入淡出切換動畫效果(fadeToggle())
$(selector).fadeToggle(speed,callback);
作用:通過改變透明度,切換匹配元素的顯示或隱藏狀態。
參數的含義同show()方法。
代碼如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
display: none;
background-color: green;
}
</style>
</head>
<body>
<button>淡入</button>
<button>淡出</button>
<button>切換</button>
<div></div>
<script src="jQuery.js"></script>
<script>
$(function () {
//點擊按鈕后產生動畫
$("button:eq(0)").click(function () {
//淡入動畫: fadeIn;
$("div").fadeIn(function () {
});
});
//淡出動畫
$("button:eq(1)").click(function () {
//淡出動畫:fadeOut;
$("div").fadeOut(function () {
});
});
$("button:eq(2)").click(function () {
//淡入淡出切換
$("div").fadeToggle();
})
})
</script>
</body>
</html>
