2

这里有一把小提琴。

仍在尝试找出 Ext JS。单击链接时如何触发单击事件?应该是世界上最简单的事情吧?单击a明显而不是span. 另外,如果可能,我想将附加侦听器的那段代码移动到 a 中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);

我试图按照“侦听 DOM 事件”部分中的说明进行操作。

此外,一旦我的处理程序函数返回,我不希望任何其他处理程序可能触发......所以我猜想相当于 jQuery preventDefault

4

2 回答 2

2

您也可以简单地使用listeners,例如:

listeners: {
    click: {
        element: 'el',
        delegate: 'a',
        fn: function() {
            Ext.Msg.alert('I have been clicked!')
        }
    }
}

基于您的工作示例:https ://fiddle.sencha.com/#fiddle/v72

delegate可以是任何选择器)

于 2015-10-09T06:08:04.567 回答
1

你快到了。

您需要getEl()在侦听器中使用来检索实际的 DOM 元素,以便将侦听器附加到它。

container.getEl().down('a.test').on('click', function(){ 
this.fireEvent('click', container); 
    }, container);
于 2015-10-09T03:52:51.557 回答