過CSS選擇器獲取元素的方式是非常靈活的,但是CSS選擇器獲取元素后只能操作該元素的樣式,要想為元素添加行為(如處理單擊事件),還需要通過JavaScript代碼來實現。為此,jQuery 模仿CSS選擇器實現了jQuery選擇器,通過jQuery選擇器來獲取元素,不僅讓獲取元素的方式更加多樣化,而且可以在獲取元素后為元素添加行為。
jQuery選擇器的基本語法格式如下所示。
$(selector);
上述代碼中,selector代表jQuery選擇器,代碼執行后,返回一個jQuery對象。
接下來通過與CSS選擇器對比的方式演示jQuery選擇器的基本用法。具體操作步驟如下所示。
(1)準備頁面結構
<div id="myDiv">我是一個div</div>
(2)通過CSS添加樣式
#myDiv {
border: 1px solid black;
}
上述代碼中,使用CSS選擇器獲取id值為myDiv的div元素,并為div元素添加樣式,頁面效果如下圖所示。
(3)通過jQuery添加樣式
在不使用CSS代碼的情況下,使用jQuery代碼也可以實現和上圖相同的效果,如下所示。
$('#myDiv').css('border', '1px solid black');
上述代碼中,使用jQuery選擇器獲取id值為myDiv的div元素,然后調用jQuery的css()方法為該元素添加樣式。 需要注意的是,使用jQuery選擇器獲取元素后,由于返回的是jQuery對象,所以不僅能為元素添加樣式,而且支持為元素添加行為。例如,為元素綁定事件、操作元素屬性等操作。此處只要了解jQuery選擇器的使用即可。
不使用jQuery選擇器的情況下,開發者經常通過JavaScript來獲取DOM元素,示例代碼如下所示。
// 根據id值獲取元素
document.getElementById('id的值');
// 根據元素的名稱獲取元素
document.getElementsByTagName('元素的名稱');
與上述代碼不同的是,jQuery 選擇器獲取元素對象的方式更加簡潔,如下所示。
// 根據id值獲取元素
$('#id的值');
// 根據元素的名稱獲取元素
$('元素的名稱');
實際上jQuery選擇器的出現不僅是為了簡化JavaScript的寫法,也是由于JavaScript提供的選擇DOM的方式較少,難以滿足實際開發的眾多需求。因此,jQuery 選擇器中提供了更多選擇DOM的方式,支持從CSS1到CSS3所有的選擇器以及其他常用的選擇器。
$('p') :元素選擇器,使用 CSS 選擇器來選取 HTML 元素。 $(".test") :.class 選擇器 可以通過指定的 class 查找元素。 $("#test") :#id 選擇器通過 HTML 元素的 id 屬性選取指定的元素。 $("[href]") :屬性選擇器,選取所有帶有 href 屬性的元素。比如$("[href='#']") 選取所有帶有 href 值等于 "#" 的元素。$("[href!='#']") 選取所有帶有 href 值不等于 "#" 的元素。$("[href$='.jpg']")選取所有 href 值以 ".jpg" 結尾的元素。 2、jQuery支持的css3基本選擇器 語法描述$("*")選取所有元素$(this)選取當前 HTML 元素$("p.intro")選取 class 為 intro 的 <p> 元素$("p:first")選取第一個 <p> 元素$("ul li:first")選取第一個 <ul> 元素的第一個 <li> 元素$("ul li:first-child")選取每個 <ul> 元素的第一個 <li> 元素$("[href]")選取帶有 href 屬性的元素$("a[target='_blank']")選取所有 target 屬性值等于 "_blank" 的 <a> 元素$("a[target!='_blank']")選取所有 target 屬性值不等于 "_blank" 的 <a> 元素$(":button")選取所有 type="button" 的 <input> 元素 和 <button> 元素$("tr:even")選取偶數位置的 <tr> 元素$("tr:odd")選取奇數位置的 <tr> 元素 選擇器說明*、E、E F、E。C、E#I等CSS1選擇器通配符、標記選擇器,后代選擇器,交集選擇器,ID選擇器等CSS1中的選擇器E>F子選擇器,只選中第一代E+F所有名稱為F的標記,并且該標記緊接著前面的E標記,下一個兄弟元素E~F所有名稱為F的標記,如果F和E是兄弟關系,并且F位于E后面(不需要緊跟E)E:has(F)所有名稱為E的標記,并且該標記包含F標記E[A]所有名稱為E的標記,并且具有屬性AE[A=V]所有名稱為E的標記,并且屬性A的值等于VE[A^=V]所有名稱為E的標記,并且屬性A的值以V開頭E[A$=V]所有名稱為E的標記,并且屬性A的值以V結尾E[A*=V]所有名稱為E的標記,并且屬性A的值包含V 3、css3基本選擇器中可細分出層次選擇器 通過DOM元素之間的層次關系來獲取特定元素,例如后代元素,子元素,相鄰元素和同輩元素等。 $("ancestor descendant"):選取ancestor元素里的所有descendant元素。 例:$("div span")選取<div>里的所有的<span>元素。 $("parent>child")選取parent元素下的child元素,與$("ancestor descendant")的區別是$("ancestor descendant")選取的是后代元素。 例:$("div >span")選取<div>下元素名是<span>的子元素。 $("prev+next")選取緊接在prev元素后面的next元素。 例:$(".one+div")選取class為one的下一個<div>同輩元素。 $("prev~siblings")選取prev元素之后的所有siblings元素。 例:$("#two~div")選取id為two的元素后面所有<div>同輩元素。 注意: jquery中next()來代替$("prev+next")選擇器。 jquery中nextAll()來代替$("prev~siblings")選擇器。 $("prev~siblings")和jquery中siblings()的區別: $("prev~siblings")只能選中"prev"后面的同輩<div>元素。 siblings()與前后位置無關,只有是同輩節點就都能匹配。 CSS位置選擇器 目的:基于元素的位置選擇元素,又不局限于此。 語法:jQuery的位置選擇器借鑒了css中偽類的語法,即選擇器以冒號(:)開始,可以看做是CSS為類的一種擴展。 jQuery支持的CSS3位置選擇器選擇器說明:first第一個元素,例如div p:first選中頁面中所有p元素的第一個,且該p元素是div的子元素:last最后一個元素,例如div p:last選中頁面中所有p元素的最后一個,且該p元素是div的子元素:first-child第一個子元素,例如ul:first-child選中所有的ul元素,且該ul元素是其父元素的第一個子元素:last-child最后一個子元素,例如ul:last-child選中所有的ul元素,且該ul元素是其父元素的最后一個子元素:only-child 所有沒有兄弟的子元素,例如p:only-child選中所有的p元素,如果該p元素是其父元素的唯一子元素:nth-child(n)第n個子元素,例如li:nth-child(3)選中所有li元素,且該li元素是其父元素的第3個子元素(從1開始計數):nth-child(odd|even)所有的奇數號或偶數號的子元素:nth-child(nX+Y)利用公式來計算子元素的位置,例如:nth-child(5n+1)選中第5n+1個子元素(n從0開始計數,即1,6,11,...):odd或:even 對于整個頁面而言,選中奇數或偶數號元素,例如p:even為頁面中所有排在偶數位的p元素(從0開始計算):eq(n)頁面中第n個元素,例如p:eq(4)為頁面中第5個p元素:gt(n)頁面中第n個元素之后的所有元素(不包括第n個元素):lt(n)頁面中第n個元素之前的所有元素(不包括第n個元素) 過濾選擇器(自定義選擇器) 目的:處理更復雜的選擇,是jQuery自定義的,不是CSS3中的選擇器。 語法:jQuery的過濾選擇器借鑒了css中偽類的語法,即選擇器以冒號(:)開始。 jQuery常用的過濾選擇器 選擇器說明:animated 所有處于動畫中的元素:button所有按鈕,包括input[type=button]、input[type=submit]、input[type=reset]和<button>標記:checkbox所有復選框,等同于input[type=checkbox]:checked選擇被選中的復選框或單選框:contains(characters)選擇所有包含了文本"characters"的元素:disabled頁面中被禁用了的元素:enabled頁面中沒有被禁用的元素:file表單中的文件上傳元素,等同于input[type=file]:header選中所有標題元素,例如<h1>~<h6>:hidden匹配所有的不可見元素,例如設置為display:none的元素或input元素的type屬性為“hidden”的元素:image表單中的圖片按鈕,等同于input[type=image]:input表單輸入元素,包括<input>、<select>、<textarea>、<button>:not(filter)反向選擇:parent選擇所有擁有子元素(包括文本)的元素,即除空元素外的所有元素:password表單中的密碼域,等同于input[type=password]:radio表單中的單選按鈕,等同于input[type=radio]:reset表單中的重置按鈕,等同于input[type=radio]和button[type=reset]:selected下拉菜單中的被選中項:submit表單中的提交按鈕,包括input[type=submit]和button[type=submit]:text表單中的文本域,等同于input[type=text]:visible頁面中的所有可見元素 jQuery 選擇器 選擇器 實例 選取 .class.class $(".intro.demo") 所有 class="intro" 且 class="demo" 的元素 :first $("p:first") 第一個 <p> 元素 :last $("p:last") 最后一個 <p> 元素 :even $("tr:even") 所有偶數 <tr> 元素 :odd $("tr:odd") 所有奇數 <tr> 元素 :eq(index) $("ul li:eq(3)") 列表中的第四個元素(index 從 0 開始) :gt(no) $("ul li:gt(3)") 列出 index 大于 3 的元素 :lt(no) $("ul li:lt(3)") 列出 index 小于 3 的元素 :not(selector) $("input:not(:empty)") 所有不為空的 input 元素 :header $(":header") 所有標題元素 <h1> - <h6> :animated 所有動畫元素 :contains(text) $(":contains('W3School')") 包含指定字符串的所有元素 :empty $(":empty") 無子(元素)節點的所有元素 :hidden $("p:hidden") 所有隱藏的 <p> 元素 :visible $("table:visible") 所有可見的表格 s1,s2,s3 $("th,td,.intro") 所有帶有匹配選擇的元素 [attribute] $("[href]") 所有帶有 href 屬性的元素 [attribute=value] $("[href='#']") 所有 href 屬性的值等于 "#" 的元素 [attribute!=value] $("[href!='#']") 所有 href 屬性的值不等于 "#" 的元素 [attribute$=value] $("[href$='.jpg']") 所有 href 屬性的值包含以 ".jpg" 結尾的元素 :input $(":input") 所有 <input> 元素 :text $(":text") 所有 type="text" 的 <input> 元素 :password $(":password") 所有 type="password" 的 <input> 元素 :radio $(":radio") 所有 type="radio" 的 <input> 元素 :checkbox $(":checkbox") 所有 type="checkbox" 的 <input> 元素 :submit $(":submit") 所有 type="submit" 的 <input> 元素 :reset $(":reset") 所有 type="reset" 的 <input> 元素 :button $(":button") 所有 type="button" 的 <input> 元素 :image $(":image") 所有 type="image" 的 <input> 元素 :file $(":file") 所有 type="file" 的 <input> 元素 :enabled $(":enabled") 所有激活的 input 元素 :disabled $(":disabled") 所有禁用的 input 元素 :selected $(":selected") 所有被選取的 input 元素 :checked $(":checked") 所有被選中的 input 元素
web開發前端通常都會使用jQuery這個js庫的,通過jQuery來對html元素進行操作是一件很方便的事情,但是不可能將這些操作的方式都記住的包括鄙人,所以一直就想整理一下在日常開發中使用jQuery操作html的文章
jQuery對html元素屬性操作
jQuery對元素設置屬性主要有2個方法prop(),attr()
1.prop:這是高版本jQuery新增的方法,用于操作html元素固有的屬性;例如:name、id、value等
2.attr:既可以像prop那樣操作固有屬性,也能操作我們對html元素自定義的屬性;例如:select的option我們定義< option name=’name’>< /option >這里的name就是我們自定義的屬性,只能通過attr來進行操作。
從官網可以看到元素的顯示和隱藏通過show()、hide()這兩個方法完成
.hide(),官網解釋
The matched elements will be hidden immediately, with no animation. This is roughly equivalent to calling .css( “display”, “none” )從這句可以看出來hide本質是上為元素添加了display:none這一css
.show(),官網解釋
The matched elements will be revealed immediately, with no animation. This is roughly equivalent to calling .css( “display”, “block” )可以看出show是將元素的display:none修改為display:block,因此該方法也僅適用與通過jQuery隱藏的元素或者該元素display:none屬性的元素。
jQuery獲取表單元素的值和設置表單元素的值很簡單
1.$(‘#element’).val();
2.$(‘#element).val(‘要設置的值’);
$(selector).html()用于對元素的inner html進行操作,請記住是inner Html
如果html()不帶參數這返回該元素的inner html內容,如果帶有參數則將該元素的inner html內容替換為參數內容
當然還有更詳細的內容
使用函數來設置元素內容
使用函數來設置所有匹配元素的內容。
語法
$(selector).html(function(index,oldcontent))
index - 可選。接收選擇器的 index 位置。
oldcontent - 可選。接收選擇器的當前內容。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。