jQuery選擇器、Dom操作拇惋、樣式周偎、事件處理

1.庫和框架的區(qū)別?

  • 庫:就是API函數(shù)庫撑帖,提供API供你調(diào)用蓉坎。庫內(nèi)部已經(jīng)做了各種底層的封裝,以及各種兼容問題的處理磷仰,工作中調(diào)用庫內(nèi)的API接口就能實現(xiàn)需要的功能袍嬉,不需要額外的代碼來處理函數(shù)封裝和兼容問題,讓代碼更簡潔灶平,效率更高伺通。庫就像是一個工具盒,需要什么工具就從庫中調(diào)用逢享。

使用庫的過程就是根據(jù)所需的功能罐监,查文檔,再調(diào)用庫內(nèi)的對應的API接口瞒爬。

  • 框架:提供一套完整的解決方案弓柱,你按照方案來操作以實現(xiàn)需求。

使用框架的過程就是先查文檔侧但,再照著文檔寫代碼矢空,出錯了再查文檔。

2.jquery 能做什么禀横?

jQuery將JavaScript的代碼進行了封裝屁药,處理了兼容性問題,提供API進行調(diào)用,
讓我們實現(xiàn)功能時不用再為兼容性而困擾柏锄,少寫了許多代碼酿箭。

實現(xiàn)一個目的需要很多步驟,使用原生js趾娃,就需要每個步驟都寫出來缭嫡,jQuery就把這些步驟打包封裝進一個函數(shù)中,做成一個API抬闷,用戶調(diào)用這個API妇蛀,提供參數(shù),就能一步實現(xiàn)目的,簡潔高效讥耗。

3. jquery 對象和 DOM 原生對象有什么區(qū)別有勾?如何轉(zhuǎn)化疹启?

  • DOM對象 :W3C標準用于操作文檔的API古程。具體點來說就是指 HTML 文本中的所有被標簽標記的東西 ,在js里可以用 getElementById 等傳統(tǒng)的方法獲得的對象喊崖,擁有原生對象的屬性和方法挣磨。

  • jQuery對象:將DOM原生對象進行封裝后得到的類數(shù)組對象,它是jQuery獨有的荤懂。如果一個對象是jQuery對象茁裙,那么就可以使用jQuery里的方法。

var domObj = document.getElementById('id'); //DOM對象 
var obj=('#id'); //jQuery對象;

注意:在jQuery對象中無法使用DOM對象的任何方法节仿。同樣晤锥,DOM對象也不能使用jQuery方法。

jquery提供了兩種方法將一個jquery對象轉(zhuǎn)換成一個dom對象廊宪,[index]和get(index)矾瘾。

var cr=('#html'); //jquery對象 
var cr = cr[0];//dom對象,也可寫成var cr=cr.get(0); 
Paste_Image.png

對于一個dom對象,只需要用()把dom對象包裝起來箭启,就可以獲得一個jquery對象了壕翩,方法為$(dom對象);

var cr=document.getElementById('html'); //dom對象 
var cr= $(cr); //轉(zhuǎn)換成jquery對象
Paste_Image.png

5.jquery事件綁定

1.普通事件綁定:

//事件一
$("#btn").on("click",function(){
    console.log("我被點擊了");
})
//事件二傅寡,給事件添加命名空間放妈,下面的.myClick 就是添加的命名空間,用來標識本次事件荐操,刪除事件的時候方便指定
$("#btn").on("click.myClick",function(){
    console.log("糟糕芜抒,我怎么又被點擊了");
})

$("#btn").off("click.myClick")  // 僅僅解綁了上面添加命名的事件二托启,不會解綁事件一

2.事件代理

// 事件委托或者事件代理宅倒,想讓div下面所有的span綁定事件,可以把事件直接綁定到div上
$('div').on('click', 'span', function(e){
    console.log(this);
    console.log(e);
});

3.可以在綁定的時候給事件處理程序傳遞一些參數(shù)

$('div').on('click', {name: 'Byron', age: 24}, function(e){
    console.log(e.data);
});

6.bind驾中、unbind唉堪、delegate、live肩民、on唠亚、off都有什么作用?

  • bind() 方法為被選元素添加一個或多個事件處理程序,并規(guī)定事件發(fā)生時運行的函數(shù)持痰。

$(selector).bind(event,data,function)

$("#btn").bind("click.myClick", function() {
  console.log("我被點擊了")
})
Paste_Image.png
  • unbind() 方法移除被選元素的事件處理程序灶搜。該方法能夠移除所有的或被選的事件處理程序,或者當事件發(fā)生時終止指定函數(shù)的運行。ubind() 適用于任何通過 jQuery 附加的事件處理程序割卖。

$(selector).unbind(event,function)

//移除所有 p 元素的事件處理函數(shù):
$("button").click(function(){
  $("p").unbind();
});
Paste_Image.png
  • delegate:用于事件代理前酿,為指定的元素(屬于被選元素的子元素)添加一個或多個事件處理程序,并規(guī)定當這些事件發(fā)生時運行的函數(shù)鹏溯;適用于當前或未來的元素(比如由腳本創(chuàng)建的新元素)罢维。

$(selector).delegate(childSelector,event,data,function)

Paste_Image.png
$("ul").delegate("li", "click", function() {
  var text = $(this).text()
  console.log(text)
})
  • live()方法將監(jiān)聽器綁定在了document上,不把監(jiān)聽器綁定在匹配的元素上丙挽。利用事件委托機制肺孵,把節(jié)點處理委托給document。

$(selector).live(event,data,function)

Paste_Image.png
//當點擊按鈕時颜阐,隱藏或顯示 p 元素:
$("button").live("click",function(){
  $("p").slideToggle();
});
  • on() 方法在選定的元素上綁定一個或多個事件處理函數(shù)平窘,提供綁定事件處理的所有功能。

$(selector).on(event,childSelector,data,function,map)

Paste_Image.png
//普通事件綁定
$("#btn").on("click",function(){
  console.log("我被點擊了")
})
  //事件代理綁定
$("ul").on("click", "li", function() {
  var text = $(this).text()
  console.log(text)
})
  • off() 方法通常用于移除通過 on()方法添加的事件處理程序凳怨。

$(selector).off(event,selector,function(eventObj),map)

Paste_Image.png
$("#btn").off("click.myClick")

推薦使用:on方法瑰艘,因為既能普通綁定事件,也能事件代理綁定肤舞。自 jQuery 版本 1.7 起紫新,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品萨赁。該方法給 API 帶來很多便利弊琴,簡化了 jQuery 代碼庫。
注意:on的事件代理和delegate的事件代理杖爽,寫法不一樣敲董,子元素和事件監(jiān)聽函數(shù)的位置不同

//on的事件代理 
$("ul").on("click", "li", function() {
  var text = $(this).text()
  console.log(text)
})
//delegate的事件代理
$("ul").delegate("li", "click", function() {
  var text = $(this).text()
  console.log(text)
})
//li和click的位置不一樣

5.jquery 如何展示/隱藏元素?

.show([speed], [callback]):顯示元素
.hide([speed], [callback]):隱藏元素
.toggle([speed], [callback]): 如果元素是最初顯示慰安,它會被隱藏腋寨;如果隱藏的,它會顯示出來
.fadeIn([speed], [callback]):通過淡入的方式顯示匹配元素化焕。
.fadeOut([speed], [callback]):通過淡出的方式隱藏匹配元素萄窜。
.fadeToggle([speed], [callback]):淡入淡出的方式顯示隱藏元素,隱藏顯示元素
.fadeTo(speed, opacity撒桨,[callback]):通過匹配元素的不透明度做動畫效果查刻。
.slideUp([speed], [callback]):以滑動的方式隱藏匹配的元素
.slideDown([speed], [callback]):以滑動的方式顯示匹配元素

speed:規(guī)定速度,取值:'slow', 'normal', 'fast'或毫秒
callback:顯示或隱藏后執(zhí)行的函數(shù)
opacity:透明度(0~1)

$('#btn-box1').on('click',function(){
            $('.box').show(3000);
            //$('.box').fadeIn();
            //$('.box').slideDown('slow');
        })
        $('#btn-box2').on('click',function(){
            $('.box').hide(3000);
            //$('.box').fadeOut('slow');
            //$('.box').slideUp('slow');
        })

6. jquery 動畫如何使用凤类?

animate() 方法執(zhí)行 CSS 屬性集的自定義動畫穗泵。該方法通過CSS樣式將元素從一個狀態(tài)改變?yōu)榱硪粋€狀態(tài)。CSS屬性值是逐漸改變的谜疤,這樣就可以創(chuàng)建動畫效果佃延。只有數(shù)字值可創(chuàng)建動畫(比如 "margin:30px")现诀。字符串值無法創(chuàng)建動畫(比如 "background-color:red")。

$(selector).animate(styles, speed, easing, callback)

參數(shù)說明:

  • style:必須履肃,規(guī)定產(chǎn)生動畫效果的CSS
  • speed:可選仔沿,規(guī)定動畫的速度,默認是normal尺棋,可能的值:數(shù)字(毫秒封锉,比如5000)、'slow'陡鹃、'normal'烘浦,'fast'
  • easing: 可選抖坪,規(guī)定在不同的動畫點中設(shè)置動畫速度的 easing 函數(shù)萍鲸。內(nèi)置的 easing 函數(shù): swing, linear
  • callback: 可選,animate 函數(shù)執(zhí)行完之后擦俐,要執(zhí)行的函數(shù)脊阴。
var css = {
  width: "100px",
  opacity: 0.8,
  marginRight: "800px",
  fontSize: "200px"
}
$(".box").animate(css, "slow", "linear", function(){
  console.log("動畫播放成功")
})

7.如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本蚯瞧?

.html(string)
用于獲取/修改匹配元素的innerHTML
無參數(shù)時楷力,返回元素的innerHTML
有參數(shù)時蛾方,修改元素的innerHTML為參數(shù)值
.text(string)
用來得到匹配元素集合中每個元素的文本內(nèi)容結(jié)合,包括他們的后代,或設(shè)置匹配元素集合中每個元素的文本內(nèi)容為指定的文本內(nèi)容祥诽。
無參數(shù)時,獲取元素內(nèi)部文本
有參數(shù)時花嘶,設(shè)置元素內(nèi)部文本為參數(shù)值

獲取內(nèi)容:

$(".box").html() //獲取元素內(nèi)部的html內(nèi)容辱姨,類似于innerHTML
$(".box").text() //獲取元素內(nèi)部的text文本,類似于innerText

設(shè)置內(nèi)容:

$(".box").html("<p>設(shè)置了一個段落</p>")//設(shè)置了元素內(nèi)部的html內(nèi)容,標簽生效
$(".box").text("設(shè)置了一個文本")//設(shè)置了元素內(nèi)部的text文本振诬,標簽不生效

注意:如果結(jié)果是多個時進行賦值操作的時候會給每個結(jié)果都賦值蹭睡;如果結(jié)果是多個,獲取值的時候赶么,返回結(jié)果集中的第一個對象的相應值

9.如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容肩豁?如何設(shè)置和獲取元素屬性?

  • val() 方法返回或設(shè)置被選元素的 value 屬性辫呻,通常與 HTML 表單元素一起使用清钥。

當用于返回值時:返回第一個匹配元素的 value 屬性的值。
當用于設(shè)置值時:設(shè)置所有匹配元素的 value 屬性的值放闺。

//返回 value 屬性:
$(selector).val()
//設(shè)置 value 屬性:
$(selector).val(value)
  • attr()方法用來設(shè)置或返回被選元素的屬性和值祟昭。

當該方法用于返回屬性值時:返回第一個匹配元素的值。
當該方法用于設(shè)置屬性值時:為匹配元素設(shè)置一個或多個屬性/值對雄人。

//返回屬性的值:
$(selector).attr(attribute)
//設(shè)置屬性和值:
$(selector).attr(attribute,value)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末从橘,一起剝皮案震驚了整個濱河市念赶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恰力,老刑警劉巖叉谜,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異踩萎,居然都是意外死亡停局,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門香府,熙熙樓的掌柜王于貴愁眉苦臉地迎上來董栽,“玉大人,你說我怎么就攤上這事企孩《迹” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵勿璃,是天一觀的道長擒抛。 經(jīng)常有香客問我,道長补疑,這世上最難降的妖魔是什么歧沪? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮莲组,結(jié)果婚禮上诊胞,老公的妹妹穿的比我還像新娘。我一直安慰自己锹杈,他們只是感情好撵孤,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嬉橙,像睡著了一般早直。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上市框,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天霞扬,我揣著相機與錄音,去河邊找鬼枫振。 笑死喻圃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的粪滤。 我是一名探鬼主播斧拍,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杖小!你這毒婦竟也來了肆汹?” 一聲冷哼從身側(cè)響起愚墓,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昂勉,沒想到半個月后浪册,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡岗照,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年村象,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒至。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡厚者,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迫吐,到底是詐尸還是另有隱情库菲,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布渠抹,位于F島的核電站蝙昙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梧却。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一败去、第九天 我趴在偏房一處隱蔽的房頂上張望放航。 院中可真熱鬧,春花似錦圆裕、人聲如沸广鳍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赊时。三九已至,卻和暖如春行拢,著一層夾襖步出監(jiān)牢的瞬間祖秒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工舟奠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竭缝,地道東北人。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓沼瘫,卻偏偏與公主長得像抬纸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子耿戚,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

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