为 Link 次点击创建简单监听器
Create Simple Listener for Link Clicks
我有一个 fiddle here.
仍在尝试弄清楚 Ext JS。单击 link 时如何触发单击事件?应该是世界上最简单的事情吧?当点击 a
而不是 span
时,警报应该出现。此外,如果可能的话,我想将附加侦听器的那段代码移动到 ViewController
中。
var container = Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
html: '<div><a class="test">test....</a><br><br><br><span>some text</span></div>',
listeners: {
click: function(){
Ext.Msg.alert('I have been clicked!')
}
}
});
container.down('a.test').on('click', function(){
this.fireEvent('click', container);
}, container);
我试图按照 "Listening for DOM Events" 部分中的 instructions here 进行操作。
此外,一旦我的处理程序函数 returns,我不希望任何其他处理程序可能触发..所以我猜相当于 jQuery preventDefault
.
你快到了。
您需要在监听器中使用 getEl()
来检索实际的 DOM 元素,以便将监听器附加到它。
container.getEl().down('a.test').on('click', function(){
this.fireEvent('click', container);
}, container);
您也可以简单地使用 listeners
,例如:
listeners: {
click: {
element: 'el',
delegate: 'a',
fn: function() {
Ext.Msg.alert('I have been clicked!')
}
}
}
基于您的工作示例:https://fiddle.sencha.com/#fiddle/v72
(delegate
可以是任意选择器)
我有一个 fiddle here.
仍在尝试弄清楚 Ext JS。单击 link 时如何触发单击事件?应该是世界上最简单的事情吧?当点击 a
而不是 span
时,警报应该出现。此外,如果可能的话,我想将附加侦听器的那段代码移动到 ViewController
中。
var container = Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
html: '<div><a class="test">test....</a><br><br><br><span>some text</span></div>',
listeners: {
click: function(){
Ext.Msg.alert('I have been clicked!')
}
}
});
container.down('a.test').on('click', function(){
this.fireEvent('click', container);
}, container);
我试图按照 "Listening for DOM Events" 部分中的 instructions here 进行操作。
此外,一旦我的处理程序函数 returns,我不希望任何其他处理程序可能触发..所以我猜相当于 jQuery preventDefault
.
你快到了。
您需要在监听器中使用 getEl()
来检索实际的 DOM 元素,以便将监听器附加到它。
container.getEl().down('a.test').on('click', function(){
this.fireEvent('click', container);
}, container);
您也可以简单地使用 listeners
,例如:
listeners: {
click: {
element: 'el',
delegate: 'a',
fn: function() {
Ext.Msg.alert('I have been clicked!')
}
}
}
基于您的工作示例:https://fiddle.sencha.com/#fiddle/v72
(delegate
可以是任意选择器)