jQuery相關方法總結 01

jQuery

jQuery是一個快速、簡潔的JavaScript庫。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,優化HTML文檔操作、事件處理、動畫設計和Ajax交互。

使用jQuery獲取元素

  • jQuery定義了一套選擇器規則,和css選擇器的目的一樣,都是為了選擇出符合特定規則的元素。

選擇器:

基本選擇器 功能
$('*'); 匹配頁面所有元素
$('#id'); id選擇器
$('.class'); 類選擇器
$('element'); 標簽選擇器
組合/層次選擇器 功能
$('E,F') 多元素選擇器,用”,分隔,同時匹配元素E或元素F
$('E F') 后代選擇器,用空格分隔,匹配E元素所有的后代(不只是子元素、子元素向下遞歸)元素F
$(E>F) 子元素選擇器,用”>”分隔,匹配E元素的所有直接子元素
$('E+F') 直接相鄰選擇器,匹配E元素之后的相鄰的同級元素F
$('E~F') 普通相鄰選擇器(弟弟選擇器),匹配E元素之后的同級元素F(無論直接相鄰與否)
$('.class1.class2') 匹配類名中既包含class1又包含class2的元素
基本過濾選擇器 功能
$("E:first") 所有E中的第一個
$("E:last") 所有E中的最后一個
$("E:not(selector)") 按照selector過濾E
$("E:even") 所有E中index是偶數
$("E: odd") 所有E中index是奇數
$("E:eq(n)") 所有E中index為n的元素
$("E:gt(n)") 所有E中index大于n的元素
$("E:lt(n)") 所有E中index小于n的元素
$(":header") 選擇h1~h6 元素
$("div:animated") 選擇正在執行動畫效果的元素
內容過濾器 功能
$('E:contains(value)') 內容中包含value值的元素
$('E:empty') 內容為空的元素
$('E:has(F)') 子元素中有F的元素,$('div:has(a)'):包含a標簽的div
$('E: parent') 父元素是E的元素,$('td: parent'):父元素是td的元素
可視化選擇器 功能
$('E:hidden') 所有被隱藏的E
$('E:visible') 所有可見的E
屬性過濾選擇器 功能
$('E[attr]') 含有屬性attr的E
$('E[attr=value]') 屬性attr=value的E
$('E[attr !=value]') 屬性attr!=value的E
$('E[attr ^=value]') 屬性attr以value開頭的E
$('E[attr $=value]') 屬性attr以value結尾的E
$('E[attr *=value]') 屬性attr包含value的E
$('E[attr][attr *=value]') 含有屬性attr且屬性attr!=value的E
子元素過濾器 功能
$('E:nth-child(n)') E的第n個子節點
$('E:nth-child(3n+1)') E的index符合3n+1表達式的子節點
$('E:nth-child(even)') E的index為偶數的子節點
$('E:nth-child(odd)') E的index為奇數的子節點
$('E:first-child')1 所有E的第一個子節點
$('E:last-child') 所有E的最后一個子節點
$('E: only-child') 只有唯一子節點的E的子節點
$("E:first-of-type"); 匹配所有E的父元素的第一個E類型的孩子
$('E:last-of-type'); 匹配所有E的父元素的最后一個E類型的孩子
$('E:nth-of-type(2)'); 匹配所有E的父元素的第二個E類型的孩子
$('E:nth-last-of-type(n)'); 匹配所有E的父元素的第二個E類型的孩子,從最后一個子元素開始計數
表單元素選擇器 功能
$('E:type') 特定類型的input
$(':checked') 被選中的checkbox或radio
$('option: selected') 被選中的option

元素獲取的方法

對于一個特定結果集,我們想獲取到指定index的jQuery對象

  • 使用 .eq(index): $('div').eq(3); // 獲取結果集中的第四個jQuery對象
  • 使用 .get(index): $('div').get(3); //獲取結果集中的第四個jQuery對象
  • 使用 [index] 這種方法會獲取到DOM對象: $('div')[3]; //獲取結果集中 第四個jQuery對象轉換為DOM對象的結果

兄弟元素獲取

  • next([selector]):next取得匹配的元素集合中每一個元素緊鄰的后面同輩元素的元素集合 $('.test').next();
  • prev([selector]):next取得匹配的元素集合中每一個元素緊鄰的前面同輩元素的元素集合 $('.test').prev('li');
  • nextAll([selector])
  • prevAll([selector])
  • siblings([selectors]):獲得匹配元素集合中每個元素的兄弟元素,可以提供一個可選的選擇器

父子元素的獲取

  • parent([selector]):取得匹配元素集合中,每個元素的父元素,可以提供一個可選的選擇器 $('li.item-a').parent()
  • parents([selector]):獲得集合中每個匹配元素的祖先元素,可以提供一個可選的選擇器作為參數
  • children([selector]): 獲得匹配元素集合中每個元素的子元素,選擇器選擇性篩選
  • find([selector]): 查找符合選擇器的后代元素

篩選當前結果集

  • first():獲取當前結果集中的第一個對象
  • last():獲取當前結果集的最后一個對象
  • .filter(selector), filter(function(index)):篩選當前結果集中符合條件的對象,參數可以是一個選擇器或者一個函數
$('li').filter(':even')

$('li').filter(function(index) {
  return index % 3 == 2;
})


//相當于對結果集中的每個元素(DOM對象)進行了處理,但只有返回true的元素才會被選中(選中后再被包裝成jquery對象)
$('li').filter(function(index, node){
  // 這里node和this的類型都是DOM對象
  console.log(node);
  console.log(this);
  return true; // 最終會得到所有li元素
  // 因此可以通過相關操作,只對符合的元素返回true
});
  • not(selector), not(function(index)):從匹配的元素集合中移除指定的元素,和filter相反
  • is(selector), is(function(index)), is(dom/jqObj):判斷當前匹配的元素集合中的元素,是否為一個選擇器,DOM元素,或者jQuery對象,如果這些元素至少一個匹配給定的參數,那么返回true
  • has(selector), has(dom):篩選匹配元素集合中的那些有相匹配的選擇器或DOM元素的后代元素 $('li').has('span')

jQuery DOM操作

創建元素

  • 只需要把DOM字符串傳入$方法即可返回一個jQuery對象
var obj = $('<div class="test"><p><span>Done</span></p></div>');

添加元素

  • append(content[,content]) / append(function(index,html)):匹配的元素/對象 尾部插入內容(插入到最后)

    • 可以一次添加多個內容,內容可以是DOM對象、HTML string、 jQuery對象
    • 如果參數是function,function可以返回DOM對象、HTML string、jQuery 對象,參數是集合中的元素位置與原來的html值
  • appendTo(target):對象 插入到目標元素尾部,目標元素可以是selector, DOM對象, HTML string, 元素集合, jQuery對象

    • $( "<p>Test</p>" ).appendTo( $( ".container" ) );
  • prepend(content[,content]) / prepend(function(index,html)):向匹配的元素頭部追加內容,用法和append類似,內容添加到最開始

    • $( ".inner" ).prepend( "<p>Test</p>" );
  • prependTo(target):對象 插入到目標元素頭部

    • $( "<p>Test</p>" ).prependTo( ".inner" );
  • before([content][,content]) / before(function):在 匹配的元素/對象 前面(不是頭部,而是外面,和對象并列同級)插入內容

  • insertBefore(target):把對象插入到target之前(同樣不是頭部,是同級)

  • after([content][,content]) / after(function(index)):在匹配的元素/對象前面(不是頭部,而是外面,和對象并列同級)插入內容
    后面(不是尾部,而是外面,和對象并列同級)插入內容

  • insertAfter(target): 把對象插入到target之后(同樣不是尾部,是同級)、

刪除元素

  • remove([selector]):刪除被選元素(及其子元素),可以添加一個可選的選擇器參數來過濾匹配的元素
    • $("#div1").remove();
  • empty(): 清空被選擇元素內所有子元素
  • detach(): 會返回刪除的jquery對象,方便該jquery對象插入到其他位置(這部分remove可以實現),但是使用detach方法可以保持jquery對象上的事件,但是remove不能

包裹元素

  • wrap(wrappingElement) / wrap(function(index)): 為每個對象包裹一層HTML結構,可以是selector, element, HTML string, jQuery object
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
$('.inner').wrap("<div class='new'></div>");
<div class="container">
  <div class="new">
    <div class="inner">Hello</div>
  </div>
  <div class="new">
    <div class="inner">Goodbye</div>
  </div>
</div>
  • wrapAll(wrappingElement):把所有匹配對象包裹在同一個HTML結構中
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
$('.inner').wrapAll("<div class='new'></div>");
<div class="container">
  <div class="new">
    <div class="inner">Hello</div>
    <div class="inner">Goodbye</div>
  </div>
</div>
  • wrapInner(wrappingElement) / .wrapInner(function(index))
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
$('.inner').wrapInner("<div class='new'></div>");
<div class="container">
  <div class="inner">
    <div class="new">Hello</div>
  </div>
  <div class="inner">
    <div class="new">Goodbye</div>
  </div>
</div>
  • unwap():把DOM元素的parent移除

  • html([string]): 用于獲取/修改元素的innerHTML

    • 當沒有傳遞參數的時候,返回元素的innerHTML
    • 當傳遞了一個string參數的時候,修改元素的innerHTML為參數值
  • text():和html方法類似,操作的是DOM的innerText值

屬性和CSS操作

  • jQuery對象可能包含了多個DOM對象,為jQuery直接添加事件處理程序,其內的所有DOM對象都會擁有該事件處理程序,相當于為每個對象都添加了事件處理程序
<ul class="img-list">
    <li data-src = "1.jpg">1</li>
    <li data-src = "2.jpg">2</li>
    <li data-src = "3.jpg">3</li>
</ul>
<button type="button" id="add">增加</button>
<script>
$('.img-list>li').on('click', function(){
    // 這里this指的是 <li data-src = "x.jpg">x</li> DOM對象
    var url = $(this).attr('data-src');
    $image.attr('src', url);
})
$('#add').on('click', function(){
    $('.imag-list').append("<li data-src = '1.jpg'>1</li>");
})
</script>
  • 注意:$('.img-list>li')獲取的jQuery對象是靜態的,不會因為后續的相關操作而變化(例如再網ul中新插入li,但是該li不會擁有上述事件處理程序)

屬性相關:

  • val():這是一個讀寫雙用的方法,用來處理 input 的value,當方法沒有參數的時候返回input的value值,當傳遞了一個參數的時候,方法修改input的value值為參數值.
$('input').val();
$('input').val('newValue');

//js原生方法獲取input元素的value值
var input = document.getElementById('#username');
console.log(input.value);
input.value = 'newValue';
  • .attr():獲取/設置元素特定屬性的值
$('img').get(0).attr("src");  // 獲取img的src

$('img').get(0).attr("src", "http://image.baidu.com/123.jpg");

// js原生原生方法 獲取/設置元素特定屬性的值

var img = document.querySelector("img");
var origin = img.getAttribute("src");
img.setAttribute("src", "http://image.baidu.com/123.jpg")

  • removeAttr(): 移除屬性
$('div').removeAttr('id');
// js原生方法
document.querySelector('div').removeAttribute('div');

CSS相關

  • css():
// 查看jquery對象的所有css樣式
console.log($('#container').css());
// 獲取jquery對象的指定樣式
var color = $('#container').css("background-color");
var styleProps = $('#container').css([
  "width",
  "height",
  "color",
  "background-color"
]);
// 為jquery對象設置樣式
$('#container').css( "background-color", "yellow" );

$('#container').css({
  "background-color": "yellow",
  "font-weight": "bolder"
});

// 輸出element的所有有css樣式
document.querySelector('#container').style;
// 輸出element的指定樣式
document.querySelector('#container').style.borderColor;
// 設置element的指定樣式
document.querySelector('#container').style.border = "1px solid red";
  • 當狀態發生改變時,需要對元素的樣式做出改變,使用直接修改css樣式的方法太繁瑣,可以將元素在新狀態時的樣式寫在一個類中,當狀態改變時,只需修改元素的class值或者添加class值即可

  • addClass(className)和removeClass(className):

$( "p" ).addClass( "myClass yourClass" );
$( "p" ).removeClass( "yourClass" );
//JS原生方法
var p = document.querySelector('p');
p.classList.add("myClass","yourClass");
p.classList.remove("yourClass")
  • hasClass(className):檢查元素是否包含某個class,返回true/false

  • toggleClass(className):用于切換class

第一次執行
$( "div.tumble" ).toggleClass( "bounce" )
<div class="tumble bounce">Some text.</div>
第二次執行
$( "div.tumble" ).toggleClass( "bounce" )
<div class="tumble">Some text.</div>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內容

  • 一、樣式篇 第1章 初識jQuery (1)環境搭建 進入官方網站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,420評論 0 44
  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關注...
    前端進階之旅閱讀 16,663評論 18 503
  • 通過jQuery,您可以選取(查詢,query)HTML元素,并對它們執行“操作”(actions)。 jQuer...
    枇杷樹8824閱讀 668評論 0 3
  • 1.JQuery 基礎 改變web開發人員創造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,192評論 0 1
  • 1.JQuery 基礎 改變web開發人員創造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,361評論 0 2