JavaScript基礎(chǔ)三

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.坑爹的Javascript體系之前我們提過(guò),JS由三部分組成,分別是ECMAScript,DOM 和BOM。前...
    SkyLine7閱讀 403評(píng)論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,829評(píng)論 1 45
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,508評(píng)論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,276評(píng)論 0 1
  • offset家族三大家族和一個(gè)事件對(duì)象三大家族(offset/scroll/client)事件對(duì)象/event ...
    Yuann閱讀 1,092評(píng)論 0 5

友情鏈接更多精彩內(nèi)容