1,冒泡機(jī)制
事件冒泡:當(dāng)一個(gè)元素上的事件被觸發(fā)的時(shí)候,比如說(shuō)鼠標(biāo)點(diǎn)擊了一個(gè)按鈕,同樣的事件將會(huì)在那個(gè)元素的所有祖先元素中被觸發(fā)。這一過(guò)程被稱為事件冒泡;這個(gè)事件從原始元素開(kāi)始一直冒泡到DOM樹(shù)的最上層。
阻止冒泡:w3c的方法是:(火狐、谷歌、IE11) event.stopPropagation()
IE10以下則是使用:event.cancelBubble = true
兼容代碼如下:
? var event = event ||window.event;
?if(event &&event.stopPropagation)? ? ?{
? ? ? event.stopPropagation();
? }else{
??????????? event.cancelBubble = true;
? }
addEventListener使用:調(diào)用者是:事件源。??? ???? ?????
參數(shù)1:事件去掉on?? 參數(shù)2 :調(diào)用的函數(shù)? ?參數(shù)3:可有可無(wú)。沒(méi)有默認(rèn)false.
(false情況下,支持冒泡。True支持捕獲。)
2,event獲取當(dāng)前作用對(duì)象
IE678?? ????????????event.srcElement
火狐/谷歌等???? event.target
兼容寫法獲取元素ID:
var event = event || window.event;
var targetId=? event.target?? event.target.id : event.srcElement.id;
3,獲取用戶選擇的內(nèi)容
window.getSelection().toString();? ? ? ?標(biāo)準(zhǔn)瀏覽器?? w3c
document.selection.createRange().text;??? ? ie678
4,事件委托
事件委托就是利用事件冒泡,只指定一個(gè)事件處理程序,就可以管理某一類型的所有事件。
為什么要使用事件委托?
在JavaScript中,添加到頁(yè)面上的事件處理程序數(shù)量將直接關(guān)系到頁(yè)面的整體運(yùn)行性能,因?yàn)樾枰粩嗟呐cdom節(jié)點(diǎn)進(jìn)行交互,訪問(wèn)dom的次數(shù)越多,引起瀏覽器重繪與重排的次數(shù)也就越多,就會(huì)延長(zhǎng)整個(gè)頁(yè)面的交互就緒時(shí)間,這就是為什么性能優(yōu)化的主要思想之一就是減少DOM操作的原因;如果要用事件委托,就會(huì)將所有的操作放到j(luò)s程序里面,與dom的操作就只需要交互一次,這樣就能大大的減少與dom的交互次數(shù),提高性能;
每個(gè)函數(shù)都是一個(gè)對(duì)象,是對(duì)象就會(huì)占用內(nèi)存,對(duì)象越多,內(nèi)存占用率就越大,自然性能就越差了(內(nèi)存不夠用,是硬傷,哈哈),比如上面的100個(gè)li,就要占用100個(gè)內(nèi)存空間,如果是1000個(gè),10000個(gè)呢,那只能說(shuō)呵呵了,如果用事件委托,那么我們就可以只對(duì)它的父級(jí)(如果只有一個(gè)父級(jí))這一個(gè)對(duì)象進(jìn)行操作,這樣我們就需要一個(gè)內(nèi)存空間就夠了,是不是省了很多,自然性能就會(huì)更好。
使用:根據(jù)事件冒泡原理,所有深層級(jí)的節(jié)點(diǎn)在處理事件的時(shí)候都會(huì)逐漸向外層冒泡,所以直接在更高的層級(jí)處理事件即可。

5,獲取元素屬性的方法
?給屬性賦值:(既能獲取又能賦值)
–div.style.width?????????????????????? ? 單個(gè)賦值
–div.style[“width”]??? ? 變量賦值
?獲取屬性值:(只能獲取)
–div.currentStyle.width;?? IE678? 單個(gè)獲取
–div.currentStyle[“width”];?? IE678? 變量獲取
–window.getComputedStyle(div,null).width;
–window.getComputedStyle(div,null)[“width”];
??????? ? 參數(shù)1:獲取屬性的元素。
? 參數(shù)2:偽元素,C3學(xué)習(xí)。
兼容:

6,透明度
?opacity: 0.5;? 內(nèi)容一起透明.(火狐谷歌IE9+)
? 取值范圍:?0-1
?filter: alpha(opacity=50);???? IE678
???????? 取值范圍:?0-100
兼容寫法:
獲?。簐ar opacity = getStyle(ele,k)*100 || 1;
賦值: ele.style[k] = leader/100;
? ? ? ? ? ? ele.style.filter = "alpha(opacity="+opacity+")";?//兼容IE678