jQuery的三种$()
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
1、$()可以是$(expresion),即css選擇器、Xpath或html元素,也就是通過(guò)上述表達(dá)式來(lái)匹配目標(biāo)元素。?
比如:$("a")構(gòu)造的這個(gè)對(duì)象,是用CSS選擇器構(gòu)建了一個(gè)jQuery對(duì)象——它選擇了所有的<a/>這個(gè)標(biāo)簽。如:?
$("a").click(function(){...})?
就是在點(diǎn)擊頁(yè)面上的任何一個(gè)鏈接時(shí)的觸發(fā)事件。確切地說(shuō),就是jQuery用<a/>這個(gè)標(biāo)簽構(gòu)建了一個(gè)對(duì)象$("a"),函數(shù) click()是這個(gè)jQuery對(duì)象的一個(gè)(事件)方法。?
比如有這樣一段HTML代碼:?
?
復(fù)制代碼代碼如下:
<p>one</p>?
<div>?
<p>two</p>?
</div>?
<p>three</p>?
<a href="#" id="test" onClick="jq()" >jQuery</a>?
而操作這段HTML的是如下一條語(yǔ)句:?
alert($("div>p").html());?
$()中的是一個(gè)查詢(xún)表達(dá)式,也就是用“div>p”這樣一個(gè)查詢(xún)表達(dá)式構(gòu)建了一個(gè)jQuery對(duì)象,然后的“html()”意思是顯示其html內(nèi)容,也就是上面HTML代碼段的[two]。再如:?
$("<div><p>Hello</p></div>").appendTo("body");?
$()中的是一個(gè)字符串,用這樣一段字串構(gòu)建了jQuery對(duì)象,然后向<body/>中添加這一字串。?
2、$()可以是$(element),即一個(gè)特定的DOM元素。如常用的DOM對(duì)象有document、location、form等。如這樣一行代碼:?
$(document).find("div>p").html());?
$()中的document是一個(gè)DOM元素,即在全文尋找?guī)?lt;p>的<div>元素,并顯示<p>中的內(nèi)容。?
3、$()可以是$(function),即一個(gè)函數(shù),它是$(document).ready()的一個(gè)速記方式。如常見(jiàn)的形式是這樣的:?
$(document).ready(function(){?
alert("Hello world!");?
});?
可變形作:?
$(function(){?
alert("Hello world!");?
});?
對(duì)于選擇HTML文檔中的elements,jQuery有兩種方法:?
1)如$("div>ul a"),它的意思是div標(biāo)簽中的ul標(biāo)簽中的a標(biāo)簽?
不過(guò),$('div>ul')和$('div ul')是有區(qū)別的,?
$('div>ul')是<div>的直接后代里找<ul>;?
而$('div ul')是在<div>的所有后代里找<ul>。?
2)用jQuery對(duì)象的幾個(gè)方法(如方法find()、each()等)?
$("#orderedlist).find("li") 就像 $("#orderedlist li"). each()一樣迭代了所有的li,而表達(dá)式中的“#”表示HTML中的ID,如上例中的“#orderedlist”就表示“ID為orderedlist所在的標(biāo)簽”。?
****************************************************************?
1、標(biāo)簽選擇器$('p')、類(lèi)選擇器$('.myClass')、id選擇器$('#myId')相對(duì)簡(jiǎn)單,不多說(shuō)。不過(guò)有一點(diǎn)——$('div>ul')和$('div ul')是有區(qū)別的,?
$('div>ul')是<div>的直接后代里找<ul>;而$('div ul')是在<div>的所有后代里找<ul>。?
所以,$('#sId>li')所選擇的是id為"sId"的所有<li>孩子節(jié)點(diǎn),即使這個(gè)<li>的后代還有<li>也不是它所找的范圍(所找到的DOM對(duì)象,只是它本級(jí)的DOM對(duì)象。)。而$('#sId li:not(.horizontal)'),就是指類(lèi)名"sId"里面的所有l(wèi)i的子孫中沒(méi)有horizontal類(lèi)的所有元素。——這里的not()是一個(gè)negation pseudo class.?
這里返回的是一個(gè)jQurey對(duì)象,一個(gè)數(shù)組對(duì)象,這個(gè)jQuery對(duì)象的長(zhǎng)度可用.length()得到。?
2、XPath選擇器?
如:選擇所有帶有title 屬性的鏈接,我們會(huì)這樣寫(xiě):$('a[@title]')?
[]里帶@,說(shuō)明[]里的是元素的屬性;是個(gè)屬性選擇器?
[]里沒(méi)@,說(shuō)明[]里的是元素的子孫。?
$('ul li')和$('ul[li]')雖然返回的都是一個(gè)jQuery數(shù)組,但兩者的含義正好相反。前者是要找<ul>下所有<li>子孫,而后者卻是在找所有子孫為<li>的<ul>數(shù)組。?
在XPath中,要找一個(gè)“以...開(kāi)頭”的屬性,用^=,如找一個(gè)name屬性是以mail開(kāi)頭的input元素,就用?
$('input[@name ^="mail"]')?
要找一個(gè)“以...結(jié)尾”的屬性,要用$=?
要找一個(gè)“不頭不尾”的屬性,用*=?
3、不屬于上述的CSS和XPath的選擇器,就是自定義的選擇器了,用“:”表示,這里要用的就是:first,:last,:parent ,:hidden,:visible,:odd,:even,:not('xxx'), ":eq(0)"(始于0),:nth(n),:gt(0),:lt(0),:contains("xxx")?
如:$('tr:not([th]):even')意為<tr>元素的子孫中不含<th>的所有子孫的偶數(shù)項(xiàng)?
4、還有幾個(gè),簡(jiǎn)單不解釋了?
$('th').parent()——?
$('td:contains("Henry")').prev()——內(nèi)容包含有"Henry"的<td>的上一個(gè)節(jié)點(diǎn)?
$('td:contains("Henry")').next()——內(nèi)容包含有"Henry"的<td>的下一個(gè)節(jié)點(diǎn)?
$('td:contains("Henry")').siblings()——內(nèi)容包含有"Henry"的<td>的所有兄弟節(jié)點(diǎn)?
還有一個(gè),就是end(),這個(gè)方法肯定是用在某個(gè)DOM節(jié)點(diǎn)執(zhí)行了某一動(dòng)作之后,還想在與其相關(guān)的節(jié)點(diǎn)上執(zhí)行類(lèi)似動(dòng)作,這里就要用到end()。用過(guò)end()方法之后,所返回的是執(zhí)行動(dòng)作的那個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)上。舉個(gè)例子?
$(...).parent().find(...).addClass().end()?
這里執(zhí)行動(dòng)作的節(jié)點(diǎn)是find(...),是一個(gè)數(shù)組對(duì)象,它所做的動(dòng)作是“addClass()”,之后,用了個(gè)end(),這時(shí)所返回的東東就是指向了parent()所指向的節(jié)點(diǎn),也就是執(zhí)行“addClass()”動(dòng)作的那個(gè)數(shù)組對(duì)象的父節(jié)點(diǎn)。?
5、要直接訪問(wèn)DOM元素,可用get(0)的方法,如?
$('#myelement').get(0),也可縮寫(xiě)成$('#myelement')[0]
轉(zhuǎn)載于:https://my.oschina.net/ldm95/blog/700000
總結(jié)
以上是生活随笔為你收集整理的jQuery的三种$()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 短序列组装Sequence Assemb
- 下一篇: 安装apache服务出错,无法启动此程序