一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

extjs 學(xué)習(xí)筆記(二) Ext.Element類

區(qū)別在于fly返回的是Element輕量級(jí)的,占用較少的內(nèi)存,但是不保存對(duì)象的引用,每次使用都會(huì)改變先前的對(duì)象,而get則會(huì)緩存每次返回的Element對(duì)象,但是占用較多的內(nèi)存。我們通過(guò)一個(gè)例子來(lái)說(shuō)明二者的區(qū)別,同時(shí)看看Element給我們提供的強(qiáng)大功能。在我們項(xiàng)目中添加一個(gè)html頁(yè)面,內(nèi)容如下:
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Element Demo</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
<script type="text/Javascript" src="extjs/ext-base-debug.js"></script>
<script type="text/Javascript" src="extjs/ext-all-debug.js"></script>
<script type="text/Javascript" src="extjs/ext-lang-zh_CN.js"></script>
<script type="text/Javascript" src="js/element.js"></script>
</head>
<body>
<input type="button" value="請(qǐng)點(diǎn)擊我" id="btn" />
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>

當(dāng)然還要添加element.js文件,我們先用Ext.get方法來(lái)獲取element對(duì)象并進(jìn)行一些操作,代碼如下:
復(fù)制代碼 代碼如下:
///<reference path="vswd-ext_2.0.2.js" />
/**//*
*作者:大笨
*日期:2009-10-12
*版本:1.0
*/

Ext.onReady(function() {
Ext.get("btn").on("click", function() {
var el1 = Ext.get("div1");
var el2 = Ext.get("div2");
el1.addClass("red"); //增加CSS類
el2.addClass("green");
el1.setWidth(); //設(shè)置寬度
el1.highlight(); //高亮顯示
el1.center(); //居中
el1.setOpacity(0.5); //設(shè)置透明度
el2.fadeIn({ endOpacity: 1, //可以是0和1之間的任意值
easing: 'easeOut',
duration: 1
});
//el1.addClass("red").setWidth(100).setOpacity(0.5).center();
});
});

運(yùn)行之后我們點(diǎn)擊button按鈕可以看到效果。代碼都很直觀,不需要過(guò)多的解釋。現(xiàn)在我們把Element的get方法換成fly,運(yùn)行之后我們會(huì)發(fā)現(xiàn),所有的操作都在div2上進(jìn)行,因?yàn)閐iv1的Element引用并未被保存下來(lái),第二次使用fly方法的時(shí)候改寫了第一次獲得的Element對(duì)象,所以我們看到操作都在div2上進(jìn)行了。很多用過(guò)jquery的人喜歡用方法鏈(method chain)的方式寫代碼,由于Element對(duì)象的大多數(shù)方法返回的還是Element對(duì)象,所以這里也可以采用方法鏈,就像 我在23行中寫的那樣。但是要注意highlight,fadeIn,fadeOut這些方法事實(shí)上并不是Element對(duì)象的方法,它們其實(shí)是 Ext.Fx類中的方法,只是用了js的apply方法給加到Element對(duì)象上去了(apply方法的使用可以參考這里),F(xiàn)x 淚中的方法使用了內(nèi)部的效果隊(duì)列,效果是按照特定的順序的,而Element對(duì)象的方法則是立即執(zhí)行的。所以在方法鏈中同時(shí)使用Element和Fx的方 法時(shí)需要注意,有可能會(huì)產(chǎn)生不希望看的結(jié)果。
我們的代碼中用到了setWith方法,在Element類還有一些以set開頭的方法,用來(lái)進(jìn)行一些設(shè)置,這些方大多 數(shù)有一個(gè)可選的參數(shù)用來(lái)呈現(xiàn)動(dòng)畫的效果,這個(gè)參數(shù)可以是布爾值,可以用來(lái)開啟默認(rèn)的設(shè)置,也可以是一個(gè)json對(duì)象,用來(lái)對(duì)動(dòng)畫進(jìn)行詳細(xì)的定制,我們把上 邊的代碼改一下,來(lái)看看帶動(dòng)畫的效果:
復(fù)制代碼 代碼如下:
///<reference path="vswd-ext_2.0.2.js" />
/**//*
*作者:大笨
*日期:2009-10-12
*版本:1.0
*/
Ext.onReady(function() {
Ext.get("btn").on("click", function() {
Ext.fly("div1").addClass("red").setWidth(100, {
duration: 3,
easing: 'elasticIn',
callback: function() {Ext.Msg.alert("信息","div1的寬度被設(shè)置為100") },
scope: this
});
});
});

簡(jiǎn)單解釋下上邊的代碼:duration指明動(dòng)畫的時(shí)間,這里是3秒;easing用來(lái)設(shè)定動(dòng)畫的方式,必須是有效的 Ext.lib.Easing的值,可以從幫助文檔中獲得全部的有效值;callback,當(dāng)動(dòng)畫執(zhí)行完畢的時(shí)候調(diào)用的函數(shù),scope指明callback函數(shù)的作用域。
除了使用get和fly方法,Element還有一個(gè)select方法,這可是一個(gè)很強(qiáng)大的方法,可以根據(jù)選擇器來(lái)獲取一個(gè)Element的數(shù)組(其實(shí)返回的是一個(gè)CompositeElementLite或者CompositeElement對(duì)象,這兩個(gè)類是js中的繼承關(guān)系,在內(nèi)部維護(hù)了一個(gè)Element對(duì)象的數(shù)組。當(dāng)我們?cè)诜祷氐膶?duì)象上使用Element的方法,實(shí)際上是對(duì)數(shù)組中的每一個(gè)Element對(duì)象調(diào)用方法)。這個(gè)方法可以簡(jiǎn)寫為Ext.select,有一個(gè)選擇器作為參數(shù),使用方法和jquery類似,比如說(shuō)Ext.select("p")會(huì)選擇所有的p標(biāo)簽,Ext.select(".red")會(huì)選擇css類為red的所有標(biāo)簽,選擇器可以組合來(lái)使用,比如"div.foo:nth-child(odd)[@foo=bar].bar:first"。善于使用選擇器可以給我們控制元素帶來(lái)非常大的方便,可以參閱Ext.DomQuery類的文檔來(lái)獲得更多選擇器的相關(guān)知識(shí)。
Element的query方法使用和select相似的方法來(lái)返回Dom節(jié)點(diǎn)的集合,不過(guò)需要注意的是Ext.query并不是Ext.Element.query的簡(jiǎn)寫,而是Ext.DomQuery.select方法的簡(jiǎn)寫。Dom接點(diǎn)可以通過(guò)get方法獲得Element對(duì)象,而Element對(duì)象可以通過(guò)dom屬性來(lái)獲得Dom節(jié)點(diǎn),根據(jù)不同的需要,我們可以很方便的進(jìn)行轉(zhuǎn)換。
最后說(shuō)一下Element的addListener方法,該方法可以簡(jiǎn)寫為on,用來(lái)給Element對(duì)象注冊(cè)事件,我們已經(jīng)看到過(guò)on("click",function(){})這樣的用法了。通過(guò)這個(gè)方法還可以一次注冊(cè)多個(gè)事件,例如:
復(fù)制代碼 代碼如下:
el.on({
'click' : {
fn: this.onClick,
scope: this,
delay: 100
},
'mouseover' : {
fn: this.onMouseOver,
scope: this
},
'mouseout' : {
fn: this.onMouseOut,
scope: this
}
});

delay指出在事件觸發(fā)多長(zhǎng)時(shí)間以后執(zhí)行事件處理函數(shù),單位是毫秒。還有一種簡(jiǎn)潔的寫法:
復(fù)制代碼 代碼如下:
el.on({
'click' : this.onClick,
'mouseover' : this.onMouseOver,
'mouseout' : this.onMouseOut,
scope: this
});

JavaScript技術(shù)extjs 學(xué)習(xí)筆記(二) Ext.Element類,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品伊人久久香线蕉 | 日韩香蕉网 | 欧美狂野| 国产男女免费视频 | 精品久久久久久影院免费 | 极品美女国产精品免费一区 | 91久久婷婷国产综合精品青草 | 99精品视频在线在线视频观看 | 性xxxxxxxxx18欧美 | 92精品国产自产在线观看48 | 99视频精品全部免费观看 | 成人午夜精品视频在线观看 | 久99re视频9在线观看 | 91在线高清视频 | 最新精品国偷自产在线91 | 国产精品李雅在线观看 | 香蕉成人啪国产精品视频综合网 | 久久国产乱子伦免费精品 | 日日摸夜夜添夜夜添毛片 | 精品国产福利第一区二区三区 | 美女网站视频色 | 伊人久久精品成人网 | 久久婷婷国产精品香蕉 | 精品国产午夜肉伦伦影院 | 91国在线啪精品一区 | 免费一区二区三区四区 | 国产精品2020 | 伊人不卡久久大香线蕉综合影院 | 亚洲精品国产国语 | 中文字幕在线一区二区三区 | 日韩在线不卡一区在线观看 | a级精品九九九大片免费看 a加勒比一本东京 | 伊人精品久久久大香线蕉99 | 免费在线精品视频 | 亚洲爱视频 | 国产精品久久久久久福利 | 国产日韩欧美一区二区三区综合 | 国产成人久视频免费 | 伊人婷婷涩六月丁香七月 | 色天使色护士 在线视频观看 | 国产人伦激情在线观看 |