色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

extjs 為某個(gè)事件設(shè)置攔截器

我們先來(lái)自定義一個(gè)事件:
復(fù)制代碼 代碼如下:
person = function(name) {
this.name = name;
this.addEvents("walk");
}
Ext.extend(person, Ext.util.Observable, {
info: function(event) {
return this.name + 'is' + event + 'ing.';
}
});
var person = new person('張銘諾');
person.on('walk', function() {
Ext.Msg.alert('event', person.name + '在走啊走啊。');
});

然后我們?cè)俣x一個(gè)按鈕用來(lái)觸發(fā)這個(gè)walk事件:
復(fù)制代碼 代碼如下:
var btn = new Ext.Button({
id: 'walk',
text: '觸發(fā)事件按鈕',
renderTo: Ext.getBody()
});
btn.on('click', function() {
person.fireEvent('walk');
});

當(dāng)點(diǎn)擊按鈕時(shí)觸發(fā)事件,效果如下圖所示:

現(xiàn)在我們使用capture()函數(shù)攔截事件的觸發(fā),如下面的代碼所示:
復(fù)制代碼 代碼如下:
var btn2 = new Ext.Button({
id: 'cc',
text: '攔截事件',
renderTo: Ext.getBody()
});
btn2.on('click', function() {
Ext.util.Observable.capture(person, function() {
alert('fsdjhf');
return true;
});
});


這時(shí)單擊btn2按鈕,發(fā)現(xiàn)彈出對(duì)話框后還會(huì)觸發(fā)事件,郁悶。。。。現(xiàn)在將最后一行代碼改為return false試試?事件被攔截成功了吧!

  這樣就給我們一個(gè)選擇的機(jī)會(huì),通過(guò)控制capture()中處理函數(shù)的返回值來(lái)決定是否繼續(xù)執(zhí)行某個(gè)時(shí)間的監(jiān)聽函數(shù),還是直接中止該事件的發(fā)生。

我們還可以為一個(gè)對(duì)象設(shè)置多個(gè)capture()攔截函數(shù),這些攔截函數(shù)會(huì)形成一個(gè)處理鏈條,只要其中任何一個(gè)攔截函數(shù)返回false,就會(huì)中止處理過(guò)程。

releaseCapture()函數(shù)是capture()函數(shù)的反向操作,它會(huì)一次性清除fireEvent()上所有的攔截函數(shù),不過(guò)我們無(wú)法通過(guò)它準(zhǔn)確的刪除某一個(gè)攔截函數(shù)。一旦執(zhí)行了releaseCapture(),那么之前設(shè)置的所有攔截函數(shù)就都失效了。

JavaScript技術(shù)extjs 為某個(gè)事件設(shè)置攔截器,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 鹤峰县| 博野县| 巧家县| 望都县| 修武县| 攀枝花市| 宿松县| 仙桃市| 阿城市| 交城县| 财经| 遵化市| 新建县| 鄂伦春自治旗| 九寨沟县| 南江县| 怀仁县| 云浮市| 五寨县| 拉萨市| 平远县| 永宁县| 茶陵县| 阿巴嘎旗| 呼图壁县| 贵定县| 凤山市| 共和县| 什邡市| 枣庄市| 阿尔山市| 新营市| 修水县| 寿宁县| 永福县| 龙山县| 赤壁市| 墨竹工卡县| 常宁市| 东安县| 灌云县|