從零開始學jQuery(三):元素的操作

上一回的學習中灵嫌,我們認識了很多jQuery選擇器,學會了使用選擇器來選擇DOM元素葛作。那選好了元素之后我們要干啥呢寿羞?當然!就是要對元素進行各種操作嘍赂蠢。

操作網頁元素绪穆,最常見的需求是對它進行取值、賦值虱岂、移動和刪除操作玖院。特別的,jQuery允許我們使用同一個函數對網頁元素進行取值和賦值操作第岖,區(qū)別僅在于傳參不同难菌。需要注意的是,jQuery有很多的操作函數蔑滓,并不好記憶郊酒,但我們可以根據實際的操作需求來將它們分類遇绞,然后當我們在進行某個操作時就可以從中選擇最合適的函數×蔷剑基于此摹闽,我們可以將jQuery的元素操作函數分為4類:

  • 取值&賦值
  • 移動
  • 刪除
  • 其它
1. 取值&賦值

jQuery允許我們使用同一個函數來對元素進行取值和賦值操作,區(qū)別僅在于參數不同褐健。如果結果集包含多個元素付鹿,那么賦值的時候,將對其中所有的元素賦值蚜迅;取值的時候舵匾,則是只取出第一個元素的值(.text()例外,它取出所有元素的text內容)慢叨。
例如:.attr()
1)取值

// 取值操作
<!DOCTYPE html>
<html>
<head>
  <style>
  em { color:blue; font-weight:bold; }
  div { color:red; }
</style>
  <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>
    Once there was a <em title="huge, gigantic">large</em> dinosaur...
  </p>
    The title of the emphasis is:<div></div>
  <script>
  var title = $("em").attr("title");  //獲取title屬性的值
    $("div").text(title);
  </script>
</body>
</html>

效果:

2)賦值

// 賦值操作
<img id="greatphoto" src="brush-seller.jpg" alt="brush seller" />
// 為圖片改變alt屬性 和 添加title屬性
$('#greatphoto').attr({
  alt: 'Beijing Brush Seller',
  title: 'photo by Kelly Clark'
});

其它常見的取值和賦值函數如下:

函數名 功能
.attr() 獲取匹配的元素集合中的第一個元素的屬性的值纽匙。設置每一個匹配元素的一個或多個屬性。
.val() 獲取匹配的元素集合中第一個元素的當前值拍谐。設置匹配的元素集合中每個元素的值。
.css() 獲取匹配元素集合中的第一個元素的樣式屬性的值馏段。設置每個匹配元素的一個或多個CSS屬性轩拨。
.html() 獲取集合中第一個匹配元素的HTML內容。設置每一個匹配元素的html內容院喜。
.text() 得到匹配元素集合中每個元素的合并文本亡蓉,包括他們的后代。設置匹配元素集合中每個元素的文本內容為指定的文本內容喷舀。
.prop() 獲取匹配的元素集中第一個元素的屬性(property)值砍濒。為匹配的元素設置一個或多個屬性(properties)。
.width() 為匹配的元素集合中的第一個元素計算寬度值硫麻。給每個匹配的元素設置CSS寬度爸邢。
.height() 獲取匹配元素集合中的第一個元素的當前高度值。設置每一個匹配元素的高度值拿愧。
.offset() 在匹配的元素集合中杠河,獲取的第一個元素的當前坐標,坐標相對于文檔浇辜。 設置匹配的元素集合中每一個元素的坐標券敌, 坐標相對于文檔。
.scrollLeft() 獲取匹配的元素集合中第一個元素的當前水平滾動條的位置柳洋。設置每個匹配元素的水平滾動條位置待诅。
.scrollTop() 獲取匹配的元素集合中第一個元素的當前垂直滾動條的位置。設置每個匹配元素的垂直滾動條位置熊镣。
.innerHeight() 為匹配的元素集合中的第一個元素計算高度值卑雁,包括padding立由,但是不包括border。設置匹配的元素集合中每個元素的高度值序厉。
.innerWidth() 為匹配的元素集合中的第一個元素計算寬度值锐膜,包括padding,但是不包括border弛房。設置匹配的元素集合中每個元素的寬度值道盏。
.outerHeight() 為匹配的元素集合中的第一個元素計算高度值,包括padding文捶,border和選擇性的margin荷逞。設置匹配的元素集合中每個元素的高度值。
.outerWidth() 為匹配的元素集合中的第一個元素計算寬度值粹排,包括padding种远,border和選擇性的margin。設置匹配的元素集合中每個元素的寬度值顽耳。
2. 移動

jQuery提供兩組方法來操作元素在網頁中的位置移動坠敷。一組方法是直接移動該元素,另一組方法是移動其他元素射富,使得目標元素達到我們想要的位置膝迎。
例如:假定我們要把一個div元素移到p元素的后面,有兩種方法胰耗。
方法一:使用.insertAfter()把div元素移動p元素后面限次。

$('div').insertAfter($('p'));

方法二:使用.after()把p元素加到div元素前面。

$('p').after($('div'));

兩種方法的效果一樣柴灯,卻有一個重大區(qū)別卖漫,就是它們返回的元素不一樣。第一種方法返回div元素赠群,第二種方法返回p元素羊始。

使用這種模式的操作方法總共有四對:

函數名 功能
.insertAfter().after() 在現存元素的外部,從后面插入元素乎串。
.insertBefore().before() 在現存元素的外部店枣,從前面插入元素。
.appendTo().append() 在現存元素的內部叹誉,從后面插入元素
.prependTo().prepend() 在現存元素的內部鸯两,從前面插入元素
3. 刪除
函數名 功能
.remove() 將匹配元素集合從DOM中刪除。(注:同時移除元素上的事件及 jQuery 數據长豁。)
.detach() 從DOM中去掉所有匹配的元素钧唐。(注:保存元素上的所有jQuery數據)
.empty() 從DOM中移除集合中匹配元素的所有子節(jié)點。(包括元素里的文本)
.removeProp() 為集合中匹配的元素刪除一個屬性(property)匠襟。
.removeAttr() 為匹配的元素集合中的每個元素中移除一個屬性(attribute)钝侠。
.removeClass() 移除集合中每個匹配元素上一個该园,多個或全部樣式。
.toggleClass() 在匹配的元素集合中的每個元素上添加或刪除一個或多個樣式類帅韧,即:如果存在(不存在)就刪除(添加)一個類里初。
.unwrap() 將匹配元素集合的父級元素刪除,保留自身(和兄弟元素忽舟,如果存在)在原來的位置双妨。

注:.remove()和.detach()的功能是一樣的,都是刪除匹配元素叮阅,區(qū)別在于.remove()會同時刪除元素上的jQuery數據刁品,而.detach()不刪除。

4. 其它
函數名 功能
.replaceWith() 用提供的內容替換集合中所有匹配的元素并且返回被刪除元素的集合浩姥。
.replaceAll() 用匹配元素集替換每個目標元素挑随。
.clone() 創(chuàng)建匹配元素集的深層副本
.addClass() 為每個匹配的元素添加指定的樣式類名。
.hasClass() 確定任何一個匹配元素是否有被給定的(樣式)類勒叠。
.wrap() 在每個匹配的元素外層包上一個html結構/元素兜挨。
.wrapAll() 在所有匹配元素外面包一層HTML結構。
.wrapInner() 在匹配元素里的內容外包一層結構缴饭。
.position() 獲取匹配元素中第一個元素的當前坐標暑劝,相對于offset parent的坐標。( 譯者注:offset parent指離該元素最近的而且被定位過的祖先元素 )

按照“取值&賦值”颗搂、“移動”、“刪除”和“其它”的分類標準將jQuery的操作函數分類后幕垦,我們在使用的時候就可以根據實際需求快速地查找到合適的函數丢氢。當然,這里列出來的只是一些相對常用的函數先改,還有很多請參考jQuery官方文檔或者jQuery API 中文文檔疚察。


碼字不易,如果喜歡這篇筆記的話仇奶,記得點贊哦貌嫡!
如果需要轉載,也請注明出處:
作者:江江醬醬233
原文鏈接:http://www.reibang.com/p/b9e42917e01b


參考:
https://www.jquery123.com/
https://api.jquery.com/
http://www.ruanyifeng.com/blog/2011/07/jquery_fundamentals.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末该溯,一起剝皮案震驚了整個濱河市岛抄,隨后出現的幾起案子,更是在濱河造成了極大的恐慌狈茉,老刑警劉巖夫椭,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異氯庆,居然都是意外死亡蹭秋,警方通過查閱死者的電腦和手機扰付,發(fā)現死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仁讨,“玉大人羽莺,你說我怎么就攤上這事《椿恚” “怎么了盐固?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長族跛。 經常有香客問我闰挡,道長,這世上最難降的妖魔是什么礁哄? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任长酗,我火速辦了婚禮,結果婚禮上桐绒,老公的妹妹穿的比我還像新娘夺脾。我一直安慰自己,他們只是感情好茉继,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布咧叭。 她就那樣靜靜地躺著,像睡著了一般烁竭。 火紅的嫁衣襯著肌膚如雪抵屿。 梳的紋絲不亂的頭發(fā)上白群,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音,去河邊找鬼芳杏。 笑死碾阁,一個胖子當著我的面吹牛烛愧,可吹牛的內容都是我干的音念。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼际跪,長吁一口氣:“原來是場噩夢啊……” “哼商佛!你這毒婦竟也來了?” 一聲冷哼從身側響起姆打,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤良姆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后穴肘,有當地人在樹林里發(fā)現了一具尸體歇盼,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年评抚,在試婚紗的時候發(fā)現自己被綠了豹缀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伯复。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖邢笙,靈堂內的尸體忽然破棺而出啸如,到底是詐尸還是另有隱情,我是刑警寧澤氮惯,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布叮雳,位于F島的核電站,受9級特大地震影響妇汗,放射性物質發(fā)生泄漏帘不。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一杨箭、第九天 我趴在偏房一處隱蔽的房頂上張望寞焙。 院中可真熱鬧,春花似錦互婿、人聲如沸捣郊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呛牲。三九已至,卻和暖如春驮配,著一層夾襖步出監(jiān)牢的瞬間娘扩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工壮锻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留畜侦,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓躯保,卻偏偏與公主長得像,于是被迫代替她去往敵國和親澎语。 傳聞我的和親對象是個殘疾皇子途事,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361