问题描述
|
我通过模板在Ext.Panel中创建一个新元素
我想将点击事件添加到p#more元素
如果我把:
Ext.select(\'#more\').on(\'click\',function() {
// my code
});
在Ext.Panel
的handler: function()
内有效
但是后来我更新了面板内的html,事件不再起作用了!!!
我可以将click事件放入其中的新创建的DOM元素的监听器吗?
解决方法
替换HTML时,附加到子节点的所有事件均保持链接,但子节点在DOM中不再存在。
而且事件也不会神奇地转换为新节点。
如果替换HTML,则需要将事件附加到将保留的父节点。
这称为事件委托。
您需要使用
target
或srcElement
(IE)来获取触发事件的元素,例如:
Ext.select(\'#parent-of-more\').on(\'click\',function(ev) {
var elm = ev.target || ev.srcElement;
//elm is the element that was clicked
});