jQuery官網:https://jquery.com/
jQuery是一個高效、輕量并且功能豐富的js庫。
核心在于查詢query。
jQuery是一個優秀的js函數庫,是React/Vue/Angular框架之外中大型項目的首選。
jQuery的主旨是write less, do more。
引入jQuery的方式有2種,一種是項目中直接引入jQuery的min.js文件,一種是使用服務器端jQuery文件(使用cdn)腳本標簽方式引入。
在官網的:https://jquery.com/download/ 鏈接下可以下載到完整的代碼,放到項目文件的js文件夾下。
<script src="static/js/jquery-3.7.1.min.js"></script>
在網站:https://www.bootcdn.cn/ 可以獲得穩定、快速、免費的cdn加速服務。
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
開發過程中一般使用非min.js文件方便調試,生產環境部署上線時才使用min.js這種壓縮文件。
從源碼中可以看出,jQuery的整體邏輯可以用以下簡單的結構進行描述:
( function( global, factory ) {
// 判斷有無window環境的一堆邏輯代碼
})( typeof window !=="undefined" ? window : this, function( window, noGlobal ) {
// 構造jQuery的一些邏輯代碼
return jQuery
});
從源碼中可以看出,jQuery被定義為一個函數,函數中返回了一個實例對象(看new關鍵字)。
繼續跟蹤源碼 new jQuery.fn.init( selector, context),這個函數中調用了makeArray,當然在其他if判斷語句中也有返回偽數組對象(比如,定義了length字段,還有[0]的操作),這里拿makeArray作為演示。
查看makeArray函數:
所以這個返回實例對象,是一個偽數組。
$('#menu-trigger') instanceof Array // false
$('#menu-trigger') instanceof Object // true
從源碼中可以看出,將jQuery函數和window.$ 以及window.jQuery綁定賦值,所以使用jQuery和$ 標識符就可以直接使用jQuery。通常在項目中直接使用$標識符,快捷簡省。
所以在引入jQuery的項目中:
console.log(typeof $); // function
console.log($===jQuery); // true
console.log($() instanceof Object); // true
通常形式為:$(param)
$(function() {
console.log("dom finished and execute this");
})
$('#btn').click(function () {
// 這里的this是id為#btn的dom元素
console.log(this.innerHTML)
console.log($(this).html())
})
$('<input type="number"></input>').appendTo('div')
let list=[1, 2, 3]
$.each(list, function(i, ele) {
console.log(i, ele)
})
$.trim(' hello world ')
// class中名為btn的dom元素有多少
$('.btn').length
$('.btn')[0]
$('.btn').get(0)
$('.btn').index()
// 設置名為btn的class對應的dom標簽的文本內容
$('.btn').text('自定義文本內容')
通過$(param)傳入的是selector、element、標簽情況下,返回的是包含1個或者多個dom元素對象的偽數組。
// 基礎標簽和class
// 選擇了所有的div和span標簽
$('div, span')
// 選擇所有具有某個class的標簽
$('div.container')
// 層次選擇器
$('ul span') // ul標簽下的所有span元素
$('ul>span') // ul標簽下的所有子span元素
$('.container+li') // class為container的元素后的下一個li元素
$('ul .item~*') // class為item的元素后面所有兄弟元素
// 過濾選擇器
$('div:first') // 選擇第一個div
$('div:last') // 最后一個div
$('div:not(.container)') // class不為container的所有div
$('div:lt(3):gt(0)') // 所有div元素中的大于0小于3的div元素,表示1和2索引處的dom元素
$('div:containers("hello world")') // 內容為hellow world的div元素
$('div:hidden') // style中display: none的div元素
$('div[data]') // 有data屬性的div元素, example: <div data=""></div>
$('div[data="123"]') // 有data屬性且值為123的div元素, example: <div data="123"></div>
// 示例,使table表格的奇數行背景樣式設置
$('table>tbody>tr:odd')
// form表單中
$(':text') // 所有單行輸入框
$(':text:disabled') // 所有disabled的input輸入框
$(':checkbox') // 所有checkbox
$(':checkbox:checked') // 所有選中的checkbox
$('select').val() // select標簽選中的option的value值
直接修改css屬性(如果其dom標簽存在這個css屬性)
$('#container').css('background', 'red');
$('#container').css({ 'background' : 'red', 'color': 'blue' }) // 一組屬性
清空某標簽下的所有dom:
$('.carousel-inner').empty();
給某標簽下添加dom標簽:
$('.carousel-inner').append(domStr);
移除、添加class:
$('.carousel-indicators li').removeClass('active');
$('.carousel-indicators li:first').addClass('active');
獲取dom標簽上的屬性:
$('.about-img-1>img').attr('src');
設置標簽的屬性:
$('.about-img-1>img').attr('src', (data && data['image']) ? data['image'] : '');
點擊:
$('.category-product-page-ul>li').click(function(e) {
e.preventDefault();
console.log('this is:', this); // 打印對應的dom標簽
});
hover:
$('#container').hover(
function() {
// 當鼠標進入元素時執行的函數
},
function() {
// 當鼠標離開元素時執行的函數
}
);
監聽事件:
$('.bigImage').on("mousemove", function( e ) {
// do something
});
const json='/static/js/data/xxx.json';
$.ajax({
url: json,
dataType: 'json',
success: function(data) {
// do something
},
error: function(jqXHR, textStatus, errorThrown) {
console.error('Fail to read json:', textStatus, errorThrown, json);
}
});
post請求:
過 jQuery,可以很容易地添加新元素/內容。
添加新的 HTML 內容
我們將學習用于添加新內容的四個 jQuery 方法:
append() - 在被選元素的結尾插入內容
prepend() - 在被選元素的開頭插入內容
after() - 在被選元素之后插入內容
before() - 在被選元素之前插入內容
jQuery append() 方法
jQuery append() 方法在被選元素的結尾插入內容。
實例
$("p").append("追加文本");
jQuery prepend() 方法
jQuery prepend() 方法在被選元素的開頭插入內容。
實例
$("p").prepend("在開頭追加文本");
通過 append() 和 prepend() 方法添加若干新元素
在上面的例子中,我們只在被選元素的開頭/結尾插入文本/HTML。
不過,append() 和 prepend() 方法能夠通過參數接收無限數量的新元素。可以通過 jQuery 來生成文本/HTML(就像上面的例子那樣),或者通過 JavaScript 代碼和 DOM 元素。
在下面的例子中,我們創建若干個新元素。這些元素可以通過 text/HTML、jQuery 或者 JavaScript/DOM 來創建。然后我們通過 append() 方法把這些新元素追加到文本中(對 prepend() 同樣有效):
實例
functionappendText(){vartxt1="<p>文本。</p>"; // 使用 HTML 標簽創建文本vartxt2=$("<p></p>").text("文本。"); // 使用 jQuery 創建文本vartxt3=document.createElement("p"); txt3.innerHTML="文本。"; // 使用 DOM 創建文本 text with DOM $("body").append(txt1,txt2,txt3); // 追加新元素}
jQuery after() 和 before() 方法
jQuery after() 方法在被選元素之后插入內容。
jQuery before() 方法在被選元素之前插入內容。
實例
$("img").after("在后面添加文本"); $("img").before("在前面添加文本");
通過 after() 和 before() 方法添加若干新元素
after() 和 before() 方法能夠通過參數接收無限數量的新元素??梢酝ㄟ^ text/HTML、jQuery 或者 JavaScript/DOM 來創建新元素。
在下面的例子中,我們創建若干新元素。這些元素可以通過 text/HTML、jQuery 或者 JavaScript/DOM 來創建。然后我們通過 after() 方法把這些新元素插到文本中(對 before() 同樣有效):
實例
functionafterText(){vartxt1="<b>I </b>"; // 使用 HTML 創建元素vartxt2=$("<i></i>").text("love "); // 使用 jQuery 創建元素vartxt3=document.createElement("big"); // 使用 DOM 創建元素txt3.innerHTML="jQuery!"; $("img").after(txt1,txt2,txt3); // 在圖片后添加文本}
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
query 中有很多種追加元素的方法,今天就介紹幾種最常用的,做個筆記,記錄一下。
append():方法可以在被選元素的內部的結尾處插入內容
語法:
$(selector).append(content)
例:jq在元素內部的結尾處追加元素
代碼:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原來的內容</div> <div>飛鳥慕魚博客</div> </div> <script> $('#mochu').append('<p>我要是插入的內容</p>'); </script> </body> </html>
代碼運行結果,如下圖
注:
1、如果使用JS動態修改HTML元素后,只能在瀏覽器的控制臺中查看
2、查看方法:瀏覽器 按 F12
jQuery prepend():方法在被選元素內部的起始位置插入內容
語法:
$(selector).prepend(content)
例:JQ在元素內部的開始位置追加HTML元素
代碼:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原來的內容</div> <div>飛鳥慕魚博客</div> </div> <script> $('#mochu').prepend('<p>我是利用prepend方法插入的內容</p>'); </script> </body> </html>
運行結果如下圖:
jQuery before():方法在被選元素的前面插入元素,形成兄弟節點
語法:
$(selector).before(content)
例:jq在指定元素前面追加內容
代碼:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原來的內容</div> <div>飛鳥慕魚博客</div> </div> <script> $('#mochu').before('<p>我是利用before方法插入的內容</p>'); </script> </body> </html>
代碼運行結果:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。