extjs 常用的操作

一、獲取元素(Getting Elements) 
1.Ext.get 
var el = Ext.get('myElementId');//獲取元素,等同於document.getElementById('myElementId');//會緩存 
2. Ext.fly 
var el = Ext.fly('myElementId')//不需要緩存。 
注:享元模式(Flyweight Design Pattern)是一種節省內存的模式,該模式的大概原理是建立單個全體對象然後不斷反覆使用它。 
3.Ext.getDom 
var elDom = Ext.getDom('elId'); // 依據id來查dom節點 
var elDom1 = Ext.getDom(elDom); // 依據dom節點來查dom節點 


二、CSS元素 
4.addClass 
Ext.fly('elId').addClass('myCls'); // 加入元素的'myCls'的樣式 
5.radioClass 
Ext.fly('elId').radioClass('myCls');//添加一個或多個className到這個元素,並移除其所有側邊(siblings)節點上的同名樣式。 
6.removeClass 
Ext.fly('elId').removeClass('myCls'); // 移除元素的樣式 
7.toggleClass 
Ext.fly('elId').toggleClass('myCls'); // 加入樣式 
Ext.fly('elId').toggleClass('myCls'); // 移除樣式 
Ext.fly('elId').toggleClass('myCls'); // 再加入樣式 
8.hasClass 
if (Ext.fly('elId').hasClass('myCls')) {//判斷是否已加上這個樣式 
// 是有樣式的…… 

10.replaceClass 
Ext.fly('elId').replaceClass('myClsA', 'myClsB');//替換樣式 
11.getStyle 
var color = Ext.fly('elId').getStyle('color');//返回該元素的統一化當前樣式和計算樣式。 
var zIndx = Ext.fly('elId').getStyle('z-index');//返回該元素的統一化當前樣式和計算樣式。 
12.setStyle 
Ext.fly('elId').setStyle({ 
display : 'block', 
overflow : 'hidden', 
cursor : 'pointer' 
});//設置元素的樣式,也可以用一個對象參數包含多個樣式。 
13.getColor 
Ext.fly('elId').getColor('color');//爲指定的CSS屬性返回CSS顏色 
14.setOpacity 


Ext.fly('elId').setOpacity(.45, true);//設置元素的透明度。 
15.clearOpacity 
Ext.fly('elId').clearOpacity();//清除這個元素的透明度設置 




三、Dom遊歷 
16.Ext.fly('elId').select('li:nth-child(2n)').addClass('red'); 
17.is 測試當前元素是否與傳入的選擇符相符一致。 
複製代碼 代碼如下:
var el = Ext.get('elId'); 
if (el.is('p.myCls')) { 
// 條件成立 



18.findParent 
定位於此節點,以此節點爲起點,向外圍搜索外層的父節點,搜索條件必須符合並匹配傳入的簡易選擇符。 
Ext.fly('elId').findParent('div'); // 返回dom節點 
Ext.fly('elId').findParent('div', 4); // 查找4個節點 
Ext.fly('elId').findParent('div', null, true); // 返回Ext.Element 
19.findParentNode 
定位於此節點的“父節點”,以此節點的“父節點”爲起點,向外圍搜索外層的“父父”節點,搜索條件必須符合並匹配傳入的簡易選擇符。 
Ext.fly('elId').findParentNode('div'); 
20.up 
沿着DOM,向外圍搜索外層的“父父”節點,搜索條件必須符合並匹配傳入的簡易選擇符。 
Ext.fly('elId').up('div'); 
Ext.fly('elId').up('div', 5); // 限5層的內查找 
21.select 
傳入一個CSS選擇符的參數,然後依據該CSS選擇符從當前元素下面,形成期待匹配子節點的集合,也就是“選擇”的操作,最後以一個Ext.CompositeElement類型的組合元素的形式返回。如果以Ext.select()調用表示從document可是搜索。 
// 返回結果的CompositeElement 
Ext.fly('elId').select('div:nth-child(2)'); 
// 返回數組 
Ext.fly('elId').select('div:nth-child(2)', 
true); 
// 整個document都會搜索 
Ext.select('div:nth-child(2)'); 
22.query 
進行一次query的查詢,返回DOM 節點組成的數組。可選地第二參數設置爲查詢的起點,如不指定則爲 document。 
// 返回dom節點組成的數組 
Ext.query('div:nth-child(2)'); 
23.child 
基於送入的選擇符,不限定深度進行搜索,符合的話選取單個子節點。 
Ext.fly('elId').child('p.highlight'); // 返回的類型是Ext.Element 
Ext.fly('elId').child('p.highlight', true); // 返回dom節點 
24.down 
基於該選擇符,"直接"選取單個子節點。 
Ext.fly('elId').down('span'); // 返回的類型是Ext.Element 
Ext.fly('elId').down('span', true); // 返回dom節點 


25.parent 
返回當前節點的那個父節點,可選地可送入一個期待的選擇符。 
// 返回父節點,類型是Ext.Element 
Ext.fly('elId').parent(); 
// 返回父節點,類型是html dom 
Ext.fly('elId').parent("", true); 
// 返回父級節點,但一定要是div的,找到就返回,類型是Ext.Element 
Ext.fly('elId').parent("div"); 
26.next 
獲取下一個側邊節點,跳過文本節點。可選地可送入一個期待的選擇符。 
// 返回下一個側邊節點,類型是Ext.Element 
Ext.fly('elId').next(); 
// 返回下一個側邊節點,類型是html dom 
Ext.fly('elId').next("", true); 
// 返回下一個側邊節點,但一定要是div的,找到就返回,類型是Ext.Element 
Ext.fly('elId').next("div"); 
27.prev 
獲取上一個側邊節點,跳過文本節點。可選地可送入一個期待的選擇符。 
// 返回上一個側邊節點,類型是Ext.Element 
Ext.fly('elId').prev(); 
// 返回上一個側邊節點,類型是html dom 
Ext.fly('elId').prev("", true); 
// 返回上一個側邊節點,但一定要是div的,找到就返回,類型是Ext.Element 
Ext.fly('elId').prev("div"); 
28.first 
獲取第一個側邊節點,跳過文本節點。可選地可送入一個期待的選擇符。 
// 返回第一個側邊節點,類型是Ext.Element 
Ext.fly('elId').first(); 
// 返回第一個側邊節點,類型是html dom 
Ext.fly('elId').first("", true); 
// 返回第一個側邊節點,但一定要是div的,找到就返回,類型是Ext.Element 
Ext.fly('elId').first("div"); 
29.last 
獲取最後一個側邊節點,跳過文本節點。可選地可送入一個期待的選擇符。 
// 返回最後一個側邊節點,類型是Ext.Element 
Ext.fly('elId').last(); 
// 返回最後一個側邊節點,類型是html dom 
Ext.fly('elId').last("", true); 
// 返回最後一個側邊節點,但一定要是div的,找到就返回,類型是Ext.Element 
Ext.fly('elId').last("div"); 


四、DOM操控(DHTML常見的一項任務就是DOM元素的增、刪、改、查) 
30.appendChild 
把送入的元素歸爲這個元素的子元素。 
var el = Ext.get('elId1'); 
// 用id指定 
Ext.fly('elId').appendChild('elId2'); 
// Ext.Element添加 
Ext.fly('elId').appendChild(el); 
// 選擇符組合地添加 
Ext.fly('elId').appendChild(['elId2','elId3']); 
// 直接添加dom節點 
Ext.fly('elId').appendChild(el.dom); 
// 添加CompositeElement,一組的div 
Ext.fly('elId').appendChild(Ext.select('div')); 
31.appendTo 
把這個元素添加到送入的元素裏面。 
var el = Ext.get('elId1'); 
// 'elId'添加到'elId2'裏面 
Ext.fly('elId').appendTo('elId2'); 
Ext.fly('elId').appendTo(el); // 
添加到Ext.Element el 
32.insertBefore 
傳入一個元素的參數,將其放置在當前元素之前的位置。 
var el = Ext.get('elId1'); 
// dom節點在前面插入 
Ext.fly('elId').insertBefore('elId2'); 
//Ext.Element el在前面插入 
Ext.fly('elId').insertBefore(el); 
33.insertAfter 
傳入一個元素的參數,將其放置在當前元素之後的位置。 
var el = Ext.get('elId1'); 
// dom節點在後面插入 
Ext.fly('elId').insertAfter('elId2'); 
// Ext.Element el在後面插入 
Ext.fly('elId').insertAfter(el); 
34.insertFirst 
可以是插入一個元素,也可以是創建一個元素(要創建的話請使用“DomHelper配置項對象”作爲參數傳入),總之,這個元素作爲當前元素的第一個子元素出現。 
var el = Ext.get('elId1'); 
// 插入的dom節點作爲第一個元素 
Ext.fly('elId').insertFirst('elId2'); 
// 插入的Ext.Element作爲第一個元素 
Ext.fly('elId').insertFirst(el); 
// 用DomHelper配置項創建新節點,新節點會作爲第一個子元素被插入。 
Ext.fly('elId').insertFirst({ 
tag: 'p', 
cls: 'myCls', 
html: 'Hi I am the new first child' 
}); 
35.replace 
用於當前這個元素替換傳入的元素。 
var el = Ext.get('elId1'); 
// 'elId'去替換'elId2' 
Ext.fly('elId').replace('elId2'); 
// 'elId'去替換'elId1' 
Ext.fly('elId').replace(el); 
36.replaceWith 
用傳入的元素替換這個元素。參數可以是新元素或是要創建的DomHelper配置項對象。 
var el = Ext.get('elId1'); 
Ext.fly('elId').replaceWith('elId2'); // 'elId2'替換掉'elId'. 
Ext.fly('elId').replaceWith(el); // 
'elId1'替換掉'elId' 
// 用DomHelper配置項創建新節點,並用該節點換掉‘elId'。 
Ext.fly('elId').replaceWith({ 
tag: 'p', 
cls: 'myCls', 
html: 'Hi I have replaced elId' 
}); 




五、DomHelper配置項 
37.createChild 
傳入一個DomHelper配置項對象的參數,將其創建並加入到該元素。 
var el = Ext.get('elId'); 
var dhConfig = { 
tag: 'p', 
cls: 'myCls', 
html: 'Hi I have replaced elId' 
}; 
// 創建新的節點,放到'elId'裏面 
el.createChild(dhConfig); 
// 創建新的節點,居el第一個子元素之前 
el.createChild(dhConfig, el.first()); 
38.wrap 
創建一個新的元素,包裹在當前元素外面。 
Ext.fly('elId').wrap(); // div包着elId 
// 用新建的一個元素來包着elId 
Ext.fly('elId').wrap({ 
tag: 'p', 
cls: 'myCls', 
html: 'Hi I have replaced elId' 
}); 


六、Html片斷 
38.insertHtml 
插入HTML片斷到這個元素。至於要插入的html放在元素的哪裏,你可指定beforeBegin, beforeEnd, afterBegin, afterEnd這幾種。第二個參數是插入HTML片斷,第三個參數是決定是否返回一個Ext.Element類型的DOM對象。 
Ext.fly('elId').insertHtml( 
'beforeBegin', 
'<p><a href="anotherpage.html'>點擊我</a></p>' 
); // 返回dom節點 
Ext.fly('elId').insertHtml( 
'beforeBegin', 
'<p><a href="anotherpage.html'>點擊我</a></p>', 
true 
); // 返回Ext.Element 
39.remove 
從DOM裏面移除當前元素,並從緩存中刪除。. 
Ext.fly('elId').remove(); // 
elId在緩存和dom裏面都沒有 
40.removeNode 
移除document的DOM節點。如果是body節點的話會被忽略。 
Ext.removeNode(node); // 從dom裏面移除(HTMLElement) 




七、Ajax 
41.load 
直接訪問Updater的Ext.Updater.update()方法(相同的參數)。參數與Ext.Updater.update()方法的一致。 
Ext.fly('elId').load({url: 'serverSide.php'}) 
42.getUpdater 
獲取這個元素的UpdateManager。 
var updr = Ext.fly('elId').getUpdater(); 
updr.update({ 
url: 'http://myserver.com/index.php', 
params: { 
param1: "foo", 
param2: "bar" 

}); 


八、事件控制Event Handling 
43.addListener/on 
爲此元素加入一個事件處理函數。on()是其簡寫方式。簡寫方式作用等價,寫代碼時更省力。 
var el = Ext.get('elId'); 
el.on('click', function(e,t) { 
// e是一個標準化的事件對象(Ext.EventObject) 
// t就是點擊的目標元素,這是個Ext.Element. 
// 對象指針this也指向t 
}); 
44.removeListener/un 
從這個元素上移除一個事件處理函數。un()是它的簡寫方式。 
var el = Ext.get('elId'); 
el.un('click', this.handlerFn); 
// 或 
el.removeListener('click', this.handlerFn); 
45.Ext.EventObject 
EventObject呈現了統一各瀏覽器的這麼一個事件模型,並儘量符合W3C的標準方法。 
// e它不是一個標準的事件對象,而是Ext.EventObject。 
function handleClick(e){ 
e.preventDefault(); 
var target = e.getTarget(); 
... 

var myDiv = Ext.get('myDiv'); 
myDiv.on("click", handleClick); 
// 或 
Ext.EventManager.on('myDiv', 'click', handleClick); 
Ext.EventManager.addListener('myDiv', 'click', handleClick); 


九、高級事件功能 
46.委託delegation 
要使用事件委託的方式代替,在容器身上登記一個事件處理器,按照依附的邏輯選擇: 
Ext.fly('actions').on('click, function(e,t) { 
switch(t.id) { 
case ''btn-edit': 
// 處理特定元素的事件具體過程 
break; 
case 'btn-delete': 
// 處理特定元素的事件具體過程 
break; 
case 'btn-cancel': 
// 處理特定元素的事件具體過程 
break; 

}); 


47.委託化delegate 
你在登記事件的處理器的時候可以加入配置這個選項。一個簡易選擇符,用於過濾目標元素,或是往下一層查找目標的子孫。 
el.on('click', function(e,t) { 
// 執行事件具體過程 
}, this, { 
// 對子孫'clickable'有效 
delegate: '.clickable' 
}); 
48.翻轉hover 
這是一個Ext的翻轉菜單的實例: 
// handles when the mouse enters the element 
function enter(e,t){ 
t.toggleClass('red'); 

// handles when the mouse leaves the element 
function leave(e,t){ 
t.toggleClass('red'); 

// subscribe to the hover 
el.hover(over, out); 
49.移除事件句柄removeAllListeners 
在該元素身上移除所有已加入的偵聽器。 
el.removeAllListeners(); 
50.是否一次性觸發single 
你在登記事件的處理器的時候可以加入配置這個選項。true代表爲事件觸發後加入一個下次移除本身的處理函數。 
el.on('click', function(e,t) { 
// 執行事件具體過程 
}, this, { 
single: true // 觸發一次後不會再執行事件了 
}); 
51.緩衝buffer 
你在登記事件的處理器的時候可以加入配置這個選項。若指定一個毫秒數會把該處理函數安排到Ext.util.DelayedTask延時之後才執行。如果事件在那個事件再次觸發,則原處理器句柄將不會被啓用,但是新處理器句柄會安排在其位置。 
el.on('click', function(e,t) { 
// 執行事件具體過程 
}, this, { 
buffer: 1000 // 重複響應事件以一秒爲時間間隔 
}); 
52.延時delay 
你在登記事件的處理器的時候可以加入配置這個選項。制定觸發事件後處理函數延時執行的時間。 
el.on('click', function(e,t) { 
// 執行事件具體過程 
}, this, { 
// 延遲事件,響應事件後開始計時(這裏一秒) 
delay: 1000 
}); 
53.目標target 
你在登記事件的處理器的時候可以加入配置這個選項。如果你想另外指定另外一個目標元素,你可以在這個配置項上面設置。這可保證在事件上報階段中遇到這個元素纔會執行這個處理函數。 
複製代碼 代碼如下:
el.on('click', function(e,t) { 
// 執行事件具體過程 
}, this, { 
// 遇到裏頭的第一個'div'纔會觸發事件 
target: el.up('div') 
}); 




十、尺寸&大小 
54.getHeight 
返回元素的偏移(offset)高度。 
var ht = Ext.fly('elId').getHeight(); 
55.getWidth 
返回元素的偏移(offset)寬度。 
var wd = Ext.fly('elId').getWidth(); 
56.setHeight 
設置元素的高度。 
Ext.fly('elId').setHeight(); 
57.setWidth 
設置元素的寬度。 
Ext.fly('elId').setWidth(); 
58.getBorderWidth 
返回指定邊(side(s))的padding寬度。 
var bdr_wd = Ext.fly('elId').getBorderWidth('lr'); 
59.getPadding 
可以是t, l, r, b或是任何組合。例如,傳入lr的參數會得到(l)eft padding +(r)ight padding。 
var padding = Ext.fly('elId').getPadding('lr'); 
60.clip 
保存當前的溢出(overflow),然後進行裁剪元素的溢出部分 - 使用unclip()來移除。 
Ext.fly('elId').clip(); 
61.unclip 
在調用clip()之前,返回原始的裁剪部分(溢出的)。 
Ext.fly('elId').unclip(); 
62.isBorderBox 
測試不同的CSS規則/瀏覽器以確定該元素是否使用Border Box。 
if (Ext.isBorderBox) { 
// 



十一、定位 


63.getX 
返回元素相對於頁面座標的X位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
var elX = Ext.fly('elId').getX() 
64.getY 
返回元素相對於頁面座標的Y位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
var elY = Ext.fly('elId').getY() 
65.getXY 
返回元素當前頁面座標的位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
var elXY = Ext.fly('elId').getXY() // elXY是數組 
66.setX 
返回元素相對於頁面座標的X位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
Ext.fly('elId').setX(10) 
67.setY 
返回元素相對於頁面座標的Y位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
Ext.fly('elId').setY(10) 
68.setXY 
返回元素當前頁面座標的位置。元素必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
Ext.fly('elId').setXY([20,10]) 
69.getOffsetsTo 
返回當前元素與送入元素的距離。這兩個元素都必須是屬於DOM樹中的一部分才擁有正確的頁面座標(display:none或未加入的elements返回false)。 
var elOffsets = Ext.fly('elId').getOffsetsTo(anotherEl); 
70.getLeft 
獲取左邊的X座標。 
var elLeft = Ext.fly('elId').getLeft(); 
71.getRight 
獲取元素右邊的X座標(元素X位置 + 元素寬度)。 
var elRight = Ext.fly('elId').getRight(); 
72.getTop 
獲取頂部Y座標。 
var elTop = Ext.fly('elId').getTop(); 
73.getBottom 
獲取元素的底部Y座標(元素Y位置 + 元素寬度)。 
var elBottom = Ext.fly('elId').getBottom(); 
74.setLeft 
直接使用CSS樣式(代替setX()),設定元素的left位置。 
Ext.fly('elId').setLeft(25) 
75.setRight 
設置元素CSS Right的樣式。 
Ext.fly('elId').setRight(15) 
76.setTop 
直接使用CSS樣式(代替setY()),設定元素的top位置。 
Ext.fly('elId').setTop(12) 
77.setBottom 
設置元素CSS Bottom的樣式。 
Ext.fly('elId').setBottom(15) 
78.setLocation 
無論這個元素如何定位,設置其在頁面的座標位置。元素必須是DOM樹中的一部分才擁有頁面座標(display:none或未加入的elements會當作無效而返回false)。 
Ext.fly('elId').setLocation(15,32) 
79.moveTo 
無論這個元素如何定位,設置其在頁面的座標位置。元素必須是DOM樹中的一部分才擁有頁面座標(display:none或未加入的elements會當作無效而返回false)。 
Ext.fly('elId').moveTo(12,17) 
80.position 
初始化元素的位置。如果未傳入期待的位置,而又還沒定位的話,將會設置當前元素爲相對(relative)定位。 
Ext.fly('elId').position("relative") 
81.clearPositioning 
當文檔加載後清除位置並復位到默認。 
Ext.fly('elId').clearPositioning() 
Ext.fly('elId').clearPositioning("top") 
82.getPositioning 
返回一個包含CSS定位信息的對象。有用的技巧:連同setPostioning一起,可在更新執行之前,先做一個快照(snapshot),之後便可恢復該元素。 
var pos = Ext.fly('elId').getPositioning() 
83.setPositioning 
由getPositioning()返回的對象去進行定位。 
Ext.fly('elId').setPositioning({ 
left: 'static', 
right: 'auto' 
}) 
84.translatePoints 
送入一個頁面座標的參數,將其翻譯到元素的CSS left/top值。 
// {left:translX, top: translY} 
var points = Ext.fly('elId').translatePoints(15,18); 

詳細出處參考:http://www.jb51.net/article/29946.htm


創建級聯的下拉菜單

var data = [[''],['店前道路'], ['店鋪條件評價']];

//創建store 和 data
var projectData = [['']];

var projectData1 = [[''],['道路構造'],['道路特性'],['立地'],['動線'],['視野性'],
                  ['道路彎道'],['道路坡度'],['道路塞車'],['右轉進入'],['汽車停靠範圍']];

var projectData2 = [[''],['店鋪類型'],['賣場面積'],['店寬範圍']];

var state = [['0','禁用'],['1','啓用']];

var projectStore = new Ext.data.SimpleStore({
fields : ['name'],
data : projectData
});


new Ext.form.ComboBox({
id : '_bigProject',
name : 'bigProject',
allowBlank : 'false', // 是否允許爲空
anchor : '100%',
fieldLabel : '類別',
hiddenName : 'bigproject',
readOnly : true, // 是否只讀
editable : false, // 是否可以編輯
typeAhead : true, // 當用戶輸入停頓超過
typeAheadDelya : 350, // 設置延遲時間,默認是
triggerAction : 'all', // 默認爲"query",選擇某值後,再次選擇時只出現匹配選項,"all"表示再次選擇時出現所有項
emptyText : '請選擇', // 未選擇時顯示的文字
blankText : '該選項必選填寫', // 未選擇時,提交表單顯示的錯誤信息,
store : new Ext.data.SimpleStore({
fields : ['name'],
data : data
}),
mode : 'local', // 數據加載模式,local
// 代表本地數據
valueField : 'name', // 選項的 value
displayField : 'name', // 選項的顯示值
listeners:{
"select":function(){
var dom = modifyDeptForm.form.findField('_project');
if(this.getValue()=='店前道路')
{
projectStore.removeAll();
projectStore.loadData(projectData1);
}
if(this.getValue()=='店鋪條件評價')
{
projectStore.removeAll();
projectStore.loadData(projectData2);
}
}
}
}),new Ext.form.ComboBox({
fieldLabel : '項目',
id : '_project',
name : 'project',
anchor : '100%',
allowBlank : 'false', // 是否允許爲空
readOnly : true, // 是否只讀
editable : false, // 是否可以編輯
typeAhead : true, // 當用戶輸入停頓超過
typeAheadDelya : 350, // 設置延遲時間,默認是
triggerAction : 'all', // 默認爲"query",選擇某值後,再次選擇時只出現匹配選項,"all"表示再次選擇時出現所有項
emptyText : '請選擇', // 未選擇時顯示的文字
blankText : '該選項必選填寫', // 未選擇時,提交表單顯示的錯誤信息,

mode : 'local', // 數據加載模式,local
// 代表本地數據
valueField : 'name', // 選項的 value
displayField : 'name', // 選項的顯示值
store:projectStore,
dataIndex : 'project'
})

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章