Jquery -- 選擇器

一、標籤選擇器$('p')、類選擇器$('.myClass')、id選擇器$('#myId')相對簡單,很少說。不過有一點——$('div>ul')和$('div ul')是有區別的,
$('div>ul')是<div>的直接後代裏找<ul>;而$('div ul')是在<div>的全部後代裏找<ul>。
因此,$('#sId>li')所選擇的是id爲"sId"的全部<li>孩子節點,即便這個<li>的後代還有<li>也不是它所找的範圍(所找到的DOM對象,只是它本級的DOM對象。)。而$('#sId li:not(.horizontal)'),就是指類名"sId"裏面的全部li的子孫中沒有horizontal類的全部元素。——這裏的not()是一個negation pseudo class.
這裏返回的是一個jQurey對象,一個數組對象,這個jQuery對象的長度可用.length()獲得。
二、XPath選擇器
如:選擇全部帶有title 屬性的連接,咱們會這樣寫:$('a[@title]')
[]裏帶@,說明[]裏的是元素的屬性;是個屬性選擇器
[]裏沒@,說明[]裏的是元素的子孫。
$('ul li')和$('ul[li]')雖然返回的都是一個jQuery數組,但二者的含義正好相反。前者是要找<ul>下全部<li>子孫,然後者倒是在找全部子孫爲<li>的<ul>數組。
在XPath中,要找一個「以...開頭」的屬性,用^=,如找一個name屬性是以mail開頭的input元素,就用
$('input[ @name ^="mail"]') 要找一個「以...結尾」的屬性,要用$= 要找一個「不頭不尾」的屬性,用*= 三、不屬於上述的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>的全部子孫的偶數項 四、還有幾個,簡單不解釋了 $('th').parent()—— $('td:contains("Henry")').prev()——內容包含有"Henry"的<td>的上一個節點 $('td:contains("Henry")').next()——內容包含有"Henry"的<td>的下一個節點 $('td:contains("Henry")').siblings()——內容包含有"Henry"的<td>的全部兄弟節點 還有一個,就是end(),這個方法確定是用在某個DOM節點執行了某一動做以後,還想在與其相關的節點上執行相似動做,這裏就要用到end()。用過end()方法以後,所返回的是執行動做的那個節點的父節點上。舉個例子 $(...).parent().find(...).addClass().end() 這裏執行動做的節點是find(...),是一個數組對象,它所作的動做是「addClass()」,以後,用了個end(),這時所返回的東東就是指向了parent()所指向的節點,也就是執行「addClass()」動做的那個數組對象的父節點。 五、要直接訪問DOM元素,可用get(0)的方法,如 $('#myelement').get(0),也可縮寫成$('#myelement')[0]
相關文章
相關標籤/搜索