溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JQuery快速入門

發(fā)布時(shí)間:2020-07-23 02:28:31 來(lái)源:網(wǎng)絡(luò) 閱讀:254 作者:zsdnr 欄目:web開(kāi)發(fā)

Write less, do more, I like jQuery.

JQuery快速入門

 

JQuery快速入門

jQuery是最常用的js庫(kù),整體來(lái)說(shuō)非常輕量并易于擴(kuò)展,對(duì)于移動(dòng)應(yīng)用可以使用其更輕量的孿生兄弟Zepto代替。其是由John Resig于2006創(chuàng)建的開(kāi)源項(xiàng)目,極大的簡(jiǎn)化了javascript開(kāi)發(fā)人員遍歷HTML文檔、操作DOM、處理事件、開(kāi)發(fā)Ajax等操作,最有特色的形式是$(document).ready(function() {});其省略形式為:$(function() {});。

在使用jQuery時(shí),需要注意jQuery對(duì)象和DOM對(duì)象的區(qū)別,通常對(duì)于jQuery對(duì)象,會(huì)在變量前加$,如var $variable=jQuery對(duì)象;??梢酝ㄟ^(guò)如下方式對(duì)兩者進(jìn)行轉(zhuǎn)化。

jQuery對(duì)象轉(zhuǎn)化為DOM對(duì)象: var $cr = $('#cr');var cr = $cr[0];

DOM對(duì)象轉(zhuǎn)化為jQuery對(duì)象: var cr = document.getElementById('cr');var $cr = $(cr);

此外,在使用多個(gè)不同的javascript庫(kù)時(shí),有可能會(huì)出現(xiàn)庫(kù)之間的沖突,可以通過(guò)如下方式解決。

JQuery快速入門

jQuery.noConflict();
jQuery(function() {
jQuery('p').click(function() {
alert(jQuery(this).text());});});//推薦下面的方式var $j = jQuery.noConflict();
$j(function() {});

JQuery快速入門

 

JQuery快速入門

在介紹jQuery選擇器之前,首先引入CSS選擇器,如下表所示。

選擇器類型示例
標(biāo)簽選擇器td{}
ID選擇器#note{}
類選擇器div.classname{}
群組選擇器其實(shí)就是選擇器的組合 td,p,div,a{}
后代選擇器#links a{}
通配選擇器*{}
其他選擇器偽類選擇器、子選擇器、臨近選擇器和屬性選擇器

那么相應(yīng)的jQuery也會(huì)提供對(duì)應(yīng)的選擇器,并增加部分自定義的選擇器用于方便操作,主要包括基本選擇器、層次選擇器、過(guò)濾選擇器、表單選擇器等4類選擇器。

jQuery選擇器示例
基本選擇器
#id, .class, element最基本的id,類,元素選擇器
*匹配所有元素, $("*")
selector1,selector2,…將每一個(gè)選擇器匹配到元素合并后一起返回
層次選擇器
$("ancestor descendant")$('div span')選取<div>里所有的<span>元素
$("parent>child")$('div>span')選取<div>元素下的<span>子元素
$("prev+next")$('.one+div')選取class為one的下一個(gè)<div>元素
$("prev~siblings")$('#two~div')選取id為two的元素后面所有<div>兄弟元素
過(guò)濾選擇器
:first, :last選擇第一個(gè)/最后一個(gè)元素
:not(selector)去除所有與給定選擇器匹配的元素
:even, :odd選取索引為偶數(shù)/奇數(shù)所有的元素,初始索引為0開(kāi)始
:eq(index),gt(index),:lt(index)選取索引等于/大于/小于index的元素
:header選取所有標(biāo)題元素
:animated選取當(dāng)前正在執(zhí)行動(dòng)畫(huà)的元素
:contains(text)選取含有文本內(nèi)容的為text的元素
:empty選取不包含子元素或者文本的空元素
:has(selector)選取含有選擇器所匹配元素的元素
:parent選取含有子元素或者文本的元素
表單選擇器
:input獲取所有<input>,<textarea>,<select>和<button>元素
:text,:password,:hidden獲取所有單行文本框/密碼框/不可見(jiàn)元素
:radio, :checkbox獲取所有單選框/多選框
:submit,:reset,:button選取單選按鈕、多選按鈕、任意按鈕
:p_w_picpath, :file選取所有圖像按鈕,所有上傳域

Tip:html元素的id包含#,(,]等特殊字符時(shí),需要通過(guò)//進(jìn)行轉(zhuǎn)義,例如:<div id='id[1]'></div>, $('#id\\[1\\]') //轉(zhuǎn)義特殊字符

 

DOM(Document Object Modal)文檔對(duì)象模型是一種與瀏覽器、平臺(tái)、語(yǔ)言無(wú)關(guān)的接口,通過(guò)該接口可以輕松的訪問(wèn)瀏覽器中所有標(biāo)準(zhǔn)組件。一般來(lái)說(shuō),DOM操作可以分為3類:DOM Core,包含getElementById(),getAttribute()等方法;HTML_DOM,例如document.forms,element.src;CSS_DOM,例如element.style.color,對(duì)于jQuery來(lái)說(shuō),將會(huì)用更簡(jiǎn)潔的方式實(shí)現(xiàn)這部分功能,如下表所示。

DOM操作示例
查找結(jié)點(diǎn)獲取元素結(jié)點(diǎn):var $li = $('ul li:eq(1)'); 獲取屬性結(jié)點(diǎn):var p_txt = $li.attr('name');
創(chuàng)建結(jié)點(diǎn)jQuery工廠方法:$(html語(yǔ)句); var $li_1 = $('<li></li>');$('ul').append('$li_1'); 文本結(jié)點(diǎn)和屬性結(jié)點(diǎn)于此類似
插入結(jié)點(diǎn)插入結(jié)點(diǎn)的方式很多: append(), appendTo(), prepend(),prependTo(),添加到內(nèi)部 after(), insertAfter(),before(),insertBefore()
刪除結(jié)點(diǎn)刪除節(jié)點(diǎn):$('ul li:eq(1)').remove(); 清空結(jié)點(diǎn),即清空結(jié)點(diǎn)中的內(nèi)容(子節(jié)點(diǎn)) $('ul li:eq(1)').empty();
復(fù)制結(jié)點(diǎn)$('#xionger').click(function(){$(this).clone().appendTo('ul'); });
替換結(jié)點(diǎn)$('p').replaceWith('<strong>fruit</strong>'); .replaceALl與其操作方向相反
包裹結(jié)點(diǎn)包裹結(jié)點(diǎn):$('strong').wrap('<b></b>'); 包裹結(jié)點(diǎn)內(nèi)容:$('strong').wrapInner('<b></b>');
屬性操作獲取屬性值:var p_txt = $('p').attr('title'); 設(shè)置屬性值:$('p').attr('title', 'title xionger'); 刪除屬性:$('p').removeAttr('title');
樣式操作獲取樣式:var p_style = $('p').attr('class'); 設(shè)置樣式:$('p').attr('class', 'handsome'); 追加樣式:$('p').addClass('another');
設(shè)置和獲取HTML、文本和值.html(), .text(), .val() $('#address').focus(function() {var txt_value = $(this).val(); if (txt_value == '請(qǐng)輸入郵箱地址') { $(this).val(''); });
遍歷結(jié)點(diǎn).children(),獲取匹配元素的子元素集合 .next(), prev(),siblings()獲取前一個(gè)/后一個(gè)/所有兄弟 .closest(),獲取最近的匹配元素 $(document).bind('click', function(e) {$(e.target).closest('li').css('color', 'red'); });
CSS-DOM操作var color_txt = $('p').css('color');$('p').css({'fontSize':'30px', 'backgroundColor':'#888888'});

 

在jQuery中,對(duì)Ajax方法進(jìn)行了封裝,如下表所示。

Ajax方法

示例

.load()

參數(shù):url[,data][,callback]

$('#resText').load('test.html');

$.get()/$.post()

參數(shù)包括url,data,callback,以及返回內(nèi)容的格式的type,包括xml,html,script,_default

$.post('/tasks', $(#form01).serialize(), handler, 'json');

$.getScript()

$.getJSON()

動(dòng)態(tài)加載js, $.getScript('/public/js/test.js');

$.getJSON('/public/resources/test.json');

JSONP形式加載其他網(wǎng)站JSON數(shù)據(jù)示例:

$('#send').click(function() {

$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?', function(data) {

$.each(data.items, function(i, item) {

$("<img class='para'/>").attr('src', item.media.m).appendTo('#resText');

if (i == 3) {

return false;

}});});});

$.ajax();

參數(shù)包括url,type, timeout(ms),data,

datatype(xml,html,sscript,json.jsonp,text)

beforeSend, complete, success, error, global

序列化元素

$(#form01).serialize()序列化為字符串,其等價(jià)于:

'username' + encodeURIComponent($('#content').val())+'&'+ 'xxx';

.serializeArray()序列化為JSON數(shù)據(jù)

$.param(obj)將普通對(duì)象序列化

全局事件

$('#loading').ajaxStart(function(){});

.ajaxStop(), .ajaxComplete(),.ajaxSend(),.ajaxSuccess()

 具體示例如下所示,這兒示例是form提交,而不是json提交,需要注意(通常調(diào)用接口,使用json提交;而頁(yè)面的ajax請(qǐng)求,推薦使用form提交,會(huì)比較簡(jiǎn)單)。

JQuery快速入門 View Code

fiddler截圖如下,比如對(duì)于java spring-mvc,該form報(bào)文可以直接序列化為對(duì)象,無(wú)需添加@RequestBody注解。 

JQuery快速入門

 

JQuery快速入門

之前就介紹的$(document).ready()相信大家都不會(huì)陌生,其與window.onload實(shí)際上有一些區(qū)別的,前者是當(dāng)DOM加載完成后觸發(fā),而后者則是頁(yè)面中的所有元素(包括所有關(guān)聯(lián)元素)加載完成后執(zhí)行。在jQuery中,通常事件綁定是通過(guò)bind(type[,data],fn)方法實(shí)現(xiàn)的,其第一個(gè)參數(shù)為事件類型,非常豐富,包括blur,focus,load,resize,unload,click,dblclick,mousedown/up/move/over/out/enter/leave,change,select,submit,keypress/down/up等。

還可以通過(guò).unbind解綁事件,.trigger(eventType)來(lái)模擬觸發(fā)事件(包含默認(rèn)行為),.triggerHandler()觸發(fā)事件且不執(zhí)行默認(rèn)行為。此外,jQuery提供了合成事件,比如.hover(enter,leave),toggle(fn1,fn2)。

對(duì)于jQuery中的事件來(lái)說(shuō),其均使用事件冒泡機(jī)制,而不支持時(shí)間捕獲機(jī)制(可以用原生js)。事件冒泡就是當(dāng)頁(yè)面上有個(gè)元素時(shí),其中一個(gè)嵌套在另一個(gè)中,如果均綁定了click事件,那么觸發(fā)內(nèi)層元素的click事件時(shí),會(huì)同時(shí)觸發(fā)外部的click事件。這樣的機(jī)制在有時(shí)是需要的,但有時(shí)卻不是期望的,那么就緒要通過(guò)event.stopPropagation()方法來(lái)禁止事件的冒泡了,

此外,在jQuery中,可以通過(guò)event.preventDefault()方法來(lái)阻止元素的默認(rèn)行為,常用與a鏈接元素和submit表單提交行為。需要注意的,jQuery實(shí)際上對(duì)event進(jìn)行了封裝,以屏蔽不同瀏覽器的差異,event.target用于獲取觸發(fā)事件的元素,.relatedTarget獲取相關(guān)元素(mouseover,mouseout),.pageX/pageY獲取頁(yè)面坐標(biāo),.which獲取鼠標(biāo)左中右鍵(值為1,2,3),.metaKey獲取Ctrl鍵,.originalEvent獲取原始事件對(duì)象。

接下來(lái),將介紹jQuery庫(kù)非常吸引人的動(dòng)畫(huà)操作,如下表所示。

方法詮釋
.show(),.hide(),.toggle()顯示和隱藏元素,$('element').show(1000);
.fadeIn(),fadeOut() .fadeTo()改變?cè)氐牟煌该鞫?/span>
.slideUp(), .slideDown().slideToggle()通過(guò)修改元素高度達(dá)到元素上下移動(dòng)的效果
.animate()自定義動(dòng)畫(huà)方法,$('element').animate({left:'500px'},3000);.stop(param),停止動(dòng)畫(huà),param=true,可以清空動(dòng)畫(huà)隊(duì)列

jQuery插件非常多,但最常用的要數(shù)驗(yàn)證插件了,最后通過(guò)一個(gè)示例來(lái)了解validation插件。

JQuery快速入門

$('#commentForm').validate({
rules: {
username: { required: true, minlength: 2 },
email: { require: true, email: true },
url: 'url',
comment: 'required'};});

JQuery快速入門


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI