2021-09-14 map set jquery

Map和Set

--是ES6新增的兩個(gè)數(shù)據(jù)類型

--都屬于內(nèi)置構(gòu)造函數(shù) ?既 ?使用new的方法來實(shí)例化

Set是一個(gè)數(shù)據(jù)集合看上去是一個(gè)類似數(shù)組的數(shù)據(jù)結(jié)構(gòu),但是不是琳猫,就是Set 數(shù)據(jù)結(jié)構(gòu)

--let s=new set();

--我們可以在new 的時(shí)候直接向內(nèi)部添加數(shù)據(jù)

--例:const s = new Set([1, 2, 3, {}, function () {}, true, 'hwllo'])

Set常用方法和屬性

[if !supportLists]1.?[endif]size ?用來獲取該數(shù)據(jù)結(jié)構(gòu)中有多少數(shù)據(jù)的

--const s = new Set([1, 2, 3, {}, function () {}, true, 'hwllo'])

--console.log(s.size) // 7

[if !supportLists]2.?[endif]add ?用來向該數(shù)據(jù)類型中追加數(shù)據(jù)

--const s = new Set()

--s.add(0)

--s.add({})

--s.add(function () {})

--console.log(s.size) // 3

[if !supportLists]3.?[endif]delete ?是用來刪除該數(shù)據(jù)類型中的某一個(gè)數(shù)據(jù)的

--const s = new Set()

--s.add(0)

--s.add({})

--s.add(function () {})

--s.delete(0)

--console.log(s.size) // 2

[if !supportLists]4.?[endif]clear ?用來清空數(shù)據(jù)結(jié)構(gòu)中的所有數(shù)據(jù)

--const s = new Set()

--s.add(0)

--s.add({})

--s.add(function () {})

--s.clear()

--console.log(s.size) // 0

[if !supportLists]5.?[endif]has 用來判斷該數(shù)據(jù)類型中是否存在每一個(gè)數(shù)據(jù)

--const s = new Set()

--s.add(0)

--s.add({})

--s.add(function () {})

--console.log(s.has(0)) // true

[if !supportLists]6.?[endif]forEach 是用來遍歷該數(shù)據(jù)類型的方法

--const s = new Set()

--s.add(0)

--s.add({})

--s.add(function () {})

--s.forEach(item => {

--console.log(item) // 0 ??{} ??function () {}})

另:

[if !supportLists]1.?[endif]set沒有獲取元素(沒有索引)的直接方法 需要用[...]運(yùn)算符把該數(shù)據(jù)類型中的數(shù)據(jù)放入一個(gè)數(shù)組中锭汛,再獲取

[if !supportLists]2.?[endif]Set 不允許存儲(chǔ)重復(fù)的數(shù)據(jù)

--const s = new Set([1, 2, 3])

--s.add(4) ?// 此時(shí) size 是 4

--s.add(1) ?// 此時(shí) size 是 4

--s.add(2) ?// 此時(shí) size 是 4

--s.add(3) ?// 此時(shí) size 是 4


Map ??是一個(gè)數(shù)據(jù)集合,是一個(gè)很類似于對(duì)象的數(shù)據(jù)集合??(值= 值 的數(shù)據(jù)類型)

--const m = new Map([[{}, {}], [function () {}, function () {}], [true, 1]])

console.log(m)


/*

Map(3) {{…} => {…}, ? => ?, true => 1}

[[Entries]]

0: {Object => Object}

1: {function () {} => function () {}}

2: {true => 1}

size: (...)

__proto__: Map


*/

Map ?常用的方法和屬性

[if !supportLists]1.?[endif]size 用來獲取該數(shù)據(jù)類型中數(shù)據(jù)的個(gè)數(shù)

--const m = new Map([[{}, {}], [function () {}, function () {}], [true, 1]])

--console.log(m.size) // 3

[if !supportLists]2.?[endif]delete ?用來刪除個(gè)數(shù)據(jù)類型中的某一個(gè)數(shù)據(jù)

--const m = new Map([[{}, {}], [function () {}, function () {}], [true, 1]])

--m.delete(true)

--console.log(m.size) // 2

[if !supportLists]3.?[endif]set ?用來向該數(shù)據(jù)類型中追加數(shù)據(jù)的

--const m = new Map()

--m.set({ name: 'Jack' }, { age: 18 })

--console.log(m.size) // 1

[if !supportLists]4.?[endif]get 用來獲取該數(shù)據(jù)類型中的每一個(gè)數(shù)據(jù)的

--const m = new Map()

--m.set({ name: 'Jack' }, { age: 18 })

--m.set(true, function () {})

--console.log(m.get(true)) // function () {}

[if !supportLists]5.?[endif]clear ?用來清除該數(shù)據(jù)類型中的所有數(shù)據(jù)

--const m = new Map()


--m.set({ name: 'J ack' }, { age: 18 })

--m.set(true, function () {})

--m.clear()

--console.log(m.size) // 0

[if !supportLists]6.?[endif]has 用來判斷該數(shù)據(jù)類型中是否存在某一個(gè)數(shù)據(jù)的

--const m = new Map()

--m.set({ name: 'Jack' }, { age: 18 })

--m.set(true, function () {})

--console.log(m.has(true)) // true

另:

Map ?中鍵名不能重復(fù)惧蛹,如果重復(fù)后面的會(huì)覆蓋前面的


jQuery

--jQuery是一個(gè)前端庫桶雀,也是一個(gè)方法庫

--他里面封裝著一些列的方法供我們使用

--我們常用的一些方法它里面都有,我們可以直接拿來使用就行了

-- jQuery之所以好用,很多人愿意使用值朋,是因?yàn)樗膸讉€(gè)優(yōu)點(diǎn)太強(qiáng)大了

--優(yōu)質(zhì)的選擇器和篩選器

--好用的隱式迭代

--強(qiáng)大的鏈?zhǔn)骄幊?/p>

使用:頁面里面引入jQuery.js就行了,頁面里面引入jQuery.js就行了,jQuery向全局暴露的接口就是 jQuery或者 $ 都行


選擇器和篩選器

--選擇器和篩選器就是用來幫我們獲取DOM元素的

選擇器

1.按照 id 獲取頁面中的元素

--const ele = jQuery('#box')

--const ele = $('#box')

2. 按照類名來選擇

--const eles = jQuery('.a')

--const eles = $('.a')

3.按照標(biāo)簽名來獲取元素,可以獲取到一組元素

--const lis = jQuery('li')

--const lis = $('li')

3.按照選擇器來獲取元素巩搏,可以獲取到一組元

--const eles = jQuery('ul > li')

--const eles = $('ul > li')

特殊選擇器

[if !supportLists]1.?[endif]直接找到第一個(gè)$('li:first') // 找到所有 li 中的第一個(gè)

[if !supportLists]2.?[endif]直接找到最后一個(gè)$('li:last') // 找到所有 li 中的最后一個(gè)

[if !supportLists]3.?[endif]直接找到第幾個(gè)$('li:eq(3)') // 找到所有 li 中索引為 3 的那個(gè)

[if !supportLists]4.?[endif]找到所有奇數(shù)個(gè)$('li:odd') // 找到所有 li 中索引為 奇數(shù) 的

[if !supportLists]5.?[endif]找到所有偶數(shù)個(gè)$('li:even') // 找到所有 li 中索引為 偶數(shù) 的

篩選器

--jQuery的篩選器就是在選擇器選擇到一組元素以后

--對(duì)元素進(jìn)行篩選昨登,也可以對(duì)準(zhǔn)確的某一個(gè)元素進(jìn)行判斷和獲取

1.找到所有元素中的第一個(gè)????????????????????$('li').first()

2.找到所有元素中的最后一個(gè)??????????????????$('li').last()

3.找到某一個(gè)元素的下一個(gè)兄弟元素????????????$('li:eq(3)').next()

4.找到某一個(gè)元素的上一個(gè)兄弟元素????????????$('li:eq(3)').prev()

5.找到某一個(gè)元素的后面的所有兄弟元素????????$('li:eq(3)').nextAll()

6.找到某一個(gè)元素的前面的所有兄弟元素????????$('li:eq(3)').prevAll()

7.找到某一個(gè)元素的父元素????????????????????$('li:eq(3)').parent()

8.找到某一個(gè)元素的所有結(jié)構(gòu)父級(jí),一直到 htm??$('li:eq(3)').parents()

9.找到一組元素中的某一個(gè)

//在 li 的所有父級(jí)里面找到所有 body 標(biāo)簽

$('li').parents().find('body')

//找到 div 標(biāo)簽下所有后代元素中所有類名為 box 的元素

$('div').find('.box')

屬性操作

[if !supportLists]1.?[endif]給一個(gè)元素添加某個(gè)屬性

--prop這個(gè)方法只能添加元素自己本身就有的屬性

--如果是添加的自定義屬性贯底,不會(huì)顯示在標(biāo)簽上丰辣,但是可以使用

//給 div 元素添加一個(gè) id 屬性,值是 box

$('div').prop('id', 'box')

//獲取 div 的 id 屬性

console.log($('div').prop('id'))

[if !supportLists]2.?[endif]給元素添加某一個(gè)自定義屬性

//給 div 添加一個(gè) index 屬性禽捆,值是 1

$('div').attr('index', 1)

//獲取 div 的 index 屬性

console.log($('div').attr('index'))

[if !supportLists]3.?[endif]移除某一個(gè)屬性

//移除元素自己本身的屬性

$('div').removeProp('id')

//移除元素的自定義屬性

$('div').removeAttr('index')

[if !supportLists]4.?[endif]操作元素的類名

//判斷某一個(gè)元素有沒有某一個(gè) class

$('div').hasClass('box') // true表示該元素有 box 類名笙什,false 表示該元素沒有 box 類名


//給元素添加一個(gè)類名

$('div').addClass('box2') //給 div 元素添加一個(gè) box2 類名


//移除元素的類名

$('div').removeClass('box') //移除 div 的 box 類名


//切換元素類名

$('div').toggleClass('box3') //如果元素本身有這個(gè)類名就移除,本身沒有就添加

[if !supportLists]5.?[endif]操作元素的內(nèi)容

//給元素的 innerHTML 賦值

$('div').html('<span>hello world</span>')

//獲取元素的 innerHTML

$('div').html()


//給元素的 innerText 賦值

$('div').text('hello world')

//獲取元素的 innerText

$('div').text()


//給元素的 value 賦值

$('input').val('admin')

//獲取元素的 value 值

$('input').val()

操作樣式

// 給元素設(shè)置一個(gè) css 樣式

$('div').css('width', '100px')


// 獲取元素的某一個(gè)樣式

$('div').css('width')


// 給元素設(shè)置一組樣式

$('div').css({

width: '100px',

height: '200px'

})

隱式迭代

獲取到的元素結(jié)合綁定事件的時(shí)候睦擂,會(huì)默認(rèn)遍歷元素集合得湘,給每一個(gè)元素都綁定上事件


??$('div').click(function(){

?????console.log(this);

this.css('background-color','orange');//報(bào)錯(cuò)

this是原生DOM對(duì)象,而css是jquery對(duì)象的方法

原生的DOM對(duì)象無法使用jquery中方法

????$(this).css('background-color','orange');

??})


將原生的DOM對(duì)象轉(zhuǎn)換為jquery對(duì)象

$(原生的DOM對(duì)象) 就能的到j(luò)query對(duì)象

如果jquery對(duì)象想要使用原生的方法屬性,需要將jquery的對(duì)象轉(zhuǎn)為原生DOM對(duì)象

jquery對(duì)象[0]


??console.log($('div:first')[0]);

需要將jquery對(duì)象轉(zhuǎn)為原生DOM對(duì)象

??$('div:first')[0].onmouseover = function(){

????$(this).css('background-color','green');

??}

元素操作

- 創(chuàng)建一個(gè)元素 ?


var div = $('<div></div>')


- 內(nèi)部插入元素


// 向 div 元素中插入一個(gè) p 元素顿仇,放在最后

$('div').append($('<p></p>'))


// 把 p 元素插入到 div 中去淘正,放在最后

$('<p>hello</p>').appendTo($('div'))


// 向 div 元素中插入一個(gè) p 元素摆马,放在最前

$('div').prepend($('<p></p>'))


// 把 p 元素插入到 div 中去,放在最前

$('<p>hello</p>').prependTo($('div'))


- 外部插入元素


// 在 div 的后面插入一個(gè)元素 p

$('div').after($('<p></p>'))


// 在 div 的前面插入一個(gè)元素 p

$('div').before($('<p></p>'))


// 把 p 元素插入到 div 元素的后面

$('div').insertAfter($('<p></p>'))


// 把 p 元素插入到 div 元素的前面

$('div').insertBefore($('<p></p>'))



- 替換元素



// 把 div 元素替換成 p 元素

$('div').replaceWith($('<p></p>'))


// 用 p 元素替換掉 div 元素

$('<p></p>').replaceAll($('div'))


- 刪除元素



// 刪除元素下的所有子節(jié)點(diǎn)

$('div').empty()


// 把自己從頁面中移除

$('div').remove()



- 克隆元素


// 克隆一個(gè) li 元素

// 接受兩個(gè)參數(shù)

// ??參數(shù)1: 自己身上的事件要不要復(fù)制鸿吆,默認(rèn)是 false

// ??參數(shù)2: 所有子節(jié)點(diǎn)身上的事件要不要復(fù)制囤采,默認(rèn)是跟隨第一個(gè)參數(shù)

$('li').clone()

??

?

?

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惩淳,隨后出現(xiàn)的幾起案子蕉毯,更是在濱河造成了極大的恐慌,老刑警劉巖思犁,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件代虾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡激蹲,警方通過查閱死者的電腦和手機(jī)棉磨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來学辱,“玉大人乘瓤,你說我怎么就攤上這事〔咂” “怎么了衙傀?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)萨咕。 經(jīng)常有香客問我统抬,道長(zhǎng),這世上最難降的妖魔是什么任洞? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任蓄喇,我火速辦了婚禮发侵,結(jié)果婚禮上交掏,老公的妹妹穿的比我還像新娘。我一直安慰自己刃鳄,他們只是感情好盅弛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叔锐,像睡著了一般挪鹏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉烙,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天讨盒,我揣著相機(jī)與錄音,去河邊找鬼步责。 笑死返顺,一個(gè)胖子當(dāng)著我的面吹牛禀苦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遂鹊,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼振乏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了秉扑?” 一聲冷哼從身側(cè)響起慧邮,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舟陆,沒想到半個(gè)月后误澳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秦躯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年脓匿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宦赠。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陪毡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勾扭,到底是詐尸還是另有隱情毡琉,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布妙色,位于F島的核電站桅滋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏身辨。R本人自食惡果不足惜丐谋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煌珊。 院中可真熱鬧号俐,春花似錦、人聲如沸定庵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔬浙。三九已至猪落,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畴博,已是汗流浹背笨忌。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俱病,地道東北人官疲。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓杂曲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親袁余。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擎勘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.項(xiàng)目所遇到的問題集合 [if !supportLists]1.[endif]設(shè)置div的背景陰影 用:box-...
    一笑奈何_3bea閱讀 1,166評(píng)論 0 0
  • #前端基礎(chǔ) # ## JavaScript基礎(chǔ) ## ###渲染機(jī)制與變量 ### script代碼為什么放到bo...
    hmg閱讀 248評(píng)論 1 1
  • [if !supportLists]第一章 [endif]ES2015 ECMAScript 6(簡(jiǎn)稱ES6)是于...
    海綿寶寶_b8a2閱讀 558評(píng)論 0 0
  • [if !supportLists]第一章 [endif]介紹 [if !supportLists]一、[endi...
    海綿寶寶_b8a2閱讀 287評(píng)論 0 0
  • 1.javascript的typeof返回哪些數(shù)據(jù)類型 object number function boolea...
    洛珎閱讀 258評(píng)論 0 0