1何荚、說說庫和框架的區(qū)別缔恳?
- 庫是一個數(shù)據(jù)倉庫,里面放了各種可以利用的API病袄,由于庫的內(nèi)部已經(jīng)做了各種底層的封裝和各種兼容實現(xiàn)搂赋,因此可以調(diào)用提供的API接口來實現(xiàn)我們需要的功能,而不需要復(fù)雜的代碼和加工益缠,因此使代碼得到優(yōu)化脑奠,效率提高。
- 框架則是為解決一個(一類)問題而開發(fā)的產(chǎn)品幅慌,框架用戶一般只需要使用框架提供的類或函數(shù)宋欺,即可實現(xiàn)全部功能∫任椋可以說齿诞,框架是庫的升級版。開發(fā)者在使用框架的時候骂租,必須使用這個框架的全部代碼掌挚。
- 不同點
- 庫是工具的集合,框架是一整套的解決方案菩咨。
- 庫可以被我任意調(diào)用吠式,而框架是我解決問題要遵守的規(guī)則(簡化:我控制和我被控制的區(qū)別)陡厘。
2、jQuery 能做什么特占?
jQuery是一個兼容多瀏覽器的JavaScript庫糙置,核心理念是write less,do more是目,它的語法設(shè)計可以使開發(fā)更加便捷谤饭,例如操作文檔對象、選擇DOM元素懊纳、制作動畫效果揉抵、事件處理、使用Ajax等嗤疯。除此之外冤今,jQuery還提供API讓開發(fā)者編寫插件∶浚總之戏罢,使用jQuery能使開發(fā)者很輕松的開發(fā)出功能強(qiáng)大的靜態(tài)或動態(tài)頁面
3、jQuery 對象和 DOM 原生對象有什么區(qū)別脚囊?如何轉(zhuǎn)化龟糕?
區(qū)別:
- jQuery對象是在DOM原生對象上做了一層包裝,只能使用jQuery對象方法悔耘,不能使用DOM原生對象方法
- DOM原生對象只能使用DOM原生對象方法讲岁,不能使用jQuery對象方法
轉(zhuǎn)換:
- jQuery對象轉(zhuǎn)原生JS
- $('#btn')[0]
- $('#btn').get(0)
- 原生JS轉(zhuǎn)jQuery對象
- $(this)
- $(document.getElementById('btn'))
4、jQuery中如何綁定事件衬以?bind缓艳、unbind、delegate泄鹏、live郎任、on秧耗、off都有什么作用备籽?推薦使用哪種?使用on綁定事件使用事件代理的寫法分井?
- jQuery中如何綁定事件车猬?
jQuery 提供了四種事件監(jiān)聽的方式,分別為bind尺锚、live珠闰、delegate、on
對應(yīng)的四種解綁方式是unbind瘫辩、die伏嗜、undelegate坛悉、off
- bind、unbind承绸、delegate裸影、live、on军熏、off都有什么作用轩猩?
- bind() 為被選元素添加一個或多個事件處理程序,并規(guī)定事件發(fā)生時運行的函數(shù)荡澎。執(zhí)行bind()時均践,事件處理函數(shù)會綁定到每個匹配元素上。使用bind()所有button元素綁定了click事件摩幔,是為當(dāng)時文檔中存在的每個button元素綁定click事件彤委。如果之后你向文檔中添加了新的button元素,綁定事件不會對其生效热鞍。
$(selector).bind(event,data,function)
event 必需葫慎。規(guī)定添加到元素的一個或多個事件。由空格分隔多個事件薇宠。必須是有效的事件偷办。
data 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)澄港。
function 必需椒涯。規(guī)定當(dāng)事件發(fā)生時運行的函數(shù)。 - unbind() 方法移除被選元素的事件處理程序回梧。
$(selector).unbind(event,function)
event 可選废岂。規(guī)定刪除元素的一個或多個事件由空格分隔多個事件值.如果只規(guī)定了該參數(shù),則會刪除綁定到指定事件的所有函數(shù)狱意。
function 可選湖苞。規(guī)定從元素的指定事件取消綁定的函數(shù)名。 - delegate() 函數(shù)用于為指定元素的一個或多個事件綁定事件處理函數(shù)详囤。
此外财骨,你還可以額外傳遞給事件處理函數(shù)一些所需的數(shù)據(jù)。即使是執(zhí)行delegate()函數(shù)之后新添加的元素藏姐,只要它符合條件隆箩,綁定的事件處理函數(shù)仍然對其有效。
$(selector).delegate(childSelector,event,data,function)
childSelector 必需羔杨。規(guī)定要附加事件處理程序的一個或多個子元素捌臊。
event 必需。規(guī)定附加到元素的一個或多個事件兜材。由空格分隔多個事件值理澎。必須是有效的事件逞力。
data 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)糠爬。
function 必需掏击。規(guī)定當(dāng)事件發(fā)生時運行的函數(shù)。 - live() 為被選元素附加一個或多個事件處理程序秩铆,并規(guī)定當(dāng)這些事件發(fā)生時運行的函數(shù)砚亭。執(zhí)行l(wèi)ive()函數(shù)之后新添加的元素,只要它匹配當(dāng)前jQuery對象的選擇器殴玛,綁定的事件處理函數(shù)仍然對其有效捅膘。
$(selector).live(event,data,function)
event 必需。規(guī)定附加到元素的一個或多個事件滚粟。由空格分隔多個事件寻仗。必須是有效的事件。
data 可選凡壤。規(guī)定傳遞到該函數(shù)的額外數(shù)據(jù)署尤。
function 必需。規(guī)定當(dāng)事件發(fā)生時運行的函數(shù)亚侠。 - on() 在選定的元素上綁定一個或多個事件處理函數(shù)曹体,提供綁定事件處理的所有功能。
$(selector).on(type, [selector], [data], fn )
沒有selector時硝烂,就和bind一樣
有selector時箕别,就像delegate一樣 - off()函數(shù)用于移除元素上綁定的一個或多個事件的事件處理函數(shù),主要用于解除由on()函數(shù)綁定的事件處理函數(shù)
- 從jQuery 1.7開始,on()函數(shù)提供了綁定事件處理程序所需的所有功能滞谢,用于統(tǒng)一取代以前的bind()串稀、 delegate()、 live()等事件函數(shù)狮杨。on()支持直接在目標(biāo)元素上綁定事件母截,也支持在目標(biāo)元素的祖輩元素上委托綁定。在事件委托綁定模式下橄教,即使是執(zhí)行on()函數(shù)之后新添加的元素清寇,只要它符合條件,綁定的事件處理函數(shù)也對其有效颤陶。推薦使用on()方法和 off()方法
- on()事件代理
$('.ct').on('mouseleave','li',function(){
//$(this).removeClass('hover')
$(this).find('.cover').css('display','none')
})
5颗管、jquery 如何展示/隱藏元素陷遮?
- 展示元素有 .show() 和 .css("display", "block") 方法
- 隱藏元素有 .hide() 和.css("display", "none") 方法
- 展示/隱藏 相互切換: .toggle()方法
6滓走、 jquery 動畫如何使用?
$(selector).animate({styles},speed,easing,callback)
必須參數(shù) styles 參數(shù)定義形成動畫的 CSS 屬性帽馋。
可選的 speed 參數(shù)規(guī)定效果的時長搅方。它可以取以下值:"slow"比吭、"fast" 或毫秒。
可選的 easing 可選姨涡。規(guī)定在動畫的不同點中元素的速度衩藤。默認(rèn)值是 "swing"。"swing" - 在開頭/結(jié)尾移動慢涛漂,在中間移動快赏表。"linear" - 勻速移動
可選的 callback 參數(shù)是動畫完成后所執(zhí)行的函數(shù)名稱。
注意:當(dāng)使用 animate() 時匈仗,必須使用 Camel 標(biāo)記法書寫所有的屬性名瓢剿,比如,必須使用 paddingLeft 而不是 padding-left悠轩,使用 marginRight 而不是 margin-right间狂,等等。只有數(shù)字值可創(chuàng)建動畫(比如 "margin:30px")火架。字符串值無法創(chuàng)建動畫(比如 "backgroundColor:red")
7鉴象、如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本何鸡?
- $('p').html() 獲取p元素html內(nèi)容
$('p').html('內(nèi)容') 設(shè)置p元素html內(nèi)容
- $('p').text() 獲取p元素文本內(nèi)容
$('p').text('內(nèi)容') 設(shè)置p元素text內(nèi)容
8纺弊、如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性骡男?
- $('input').val() 獲取輸入內(nèi)容
$('input').val('內(nèi)容') 設(shè)置內(nèi)容
- $('div').attr('name')獲取元素屬性
$('div').attr('name','haha')設(shè)置元素屬性 - $('div').css('display')獲取樣式屬性
$('div').css('display'俭尖,'block')設(shè)置樣式屬性