Javascript 将事件处理程序元素添加到EXT.js面板中

Javascript 将事件处理程序元素添加到EXT.js面板中,javascript,extjs,Javascript,Extjs,在我的应用程序中,我需要一个包含HTML元素的面板,如单选按钮和复选框 对于使用EXT面板包装元素(单选按钮等),我将这些元素放入一个变量中,并将此变量放入EXT面板的HTML功能中 代码 var p = new Ext.Panel({ title: 'OptionsPanel', collapsible:true, preventBodyReset: true, renderTo: 'options', width:400, html: html

在我的应用程序中,我需要一个包含HTML元素的面板,如单选按钮和复选框

对于使用EXT面板包装元素(单选按钮等),我将这些元素放入一个变量中,并将此变量放入EXT面板的HTML功能中

代码

var p = new Ext.Panel({
    title: 'OptionsPanel',
    collapsible:true,
    preventBodyReset: true,
    renderTo: 'options',
    width:400,
    html: html.join('')
});
var html = [
'<ul id="controlToggle">',
'<li>',
        '<input type="radio" name="type" value="none" id="noneToggle" class="toggle"  checked="checked"  >',
        '<label for="noneToggle">navigate</label>',
    '</li>',

    '<li>',
        '<input type="radio" name="type" value="polygon" id="polygonToggle" class="toggle"  >',
        '<label for="polygonToggle">draw polygon</label>',
    '</li>',

    '<li>',
        '<input type="radio" name="type" value="modify" id="modifyToggle" class="toggle"  >',
        '<label for="modifyToggle">modify feature</label>',
    '</li>',
        '<ul>',
            '<li>',
                '<input id="createVertices" type="checkbox" checked="" name="createVertices" class="update">',
                '<label for="createVertices">allow vertices creation</label>',
            '</li>',
            '<li>',
                '<input id="rotate" type="checkbox" name="rotate" class="update">',
                '<label for="rotate">allow rotation</label>',
            '</li>',
            '<li>',
                '<input id="resize" type="checkbox" name="resize" class="update">',
                '<label for="resize">allow resizing</label>',
                '(<input id="keepAspectRatio" type="checkbox" name="keepAspectRatio" class="update" checked="checked">',
                '<label for="keepAspectRatio">keep aspect ratio</label>)',
            '</li>',
            '<li>',
                '<input id="drag" type="checkbox" name="drag" class="update">',
                '<label for="drag">allow dragging</label>',
            '</li>',
        '</ul>',
    '</li>',
    '</ul>'
];
但jQuery不能选择toggle类,因为它位于EXT面板的Javascript变量中

我的问题是,如何将Javascript变量中的HTML元素选择到EXT面板中?换句话说,如何使用事件处理程序将HTML元素放入EXT面板中


处理函数是在Javascript代码中定义的。

需要考虑以下几点:

  • 为什么不使用ExtJs可视元素,如Ext.form.field.Radio和Ext.form.field.Checkbox

  • 如果你真的想在ExtJs中使用普通的HTML元素,那也没关系。但是为了订阅他们的事件,你实际上需要等到他们被呈现出来。因此,您首先需要订阅面板的
    render
    事件。在处理程序中查找HTML元素(通过它们的Id或任何类型),并将侦听器添加到它们的事件中。但我建议你选择1号


  • 不确定我是否正确编辑了它。如果我使用#1作为单选按钮,我可以使用处理java脚本函数的事件处理程序。在Jquery中,我使用此代码$(“.update”).change(update);该更新是一个函数,我如何在Extjs中做到这一点?绝对-检查如何配置侦听器,例如:
    $(".toggle").click(function(){
        for(key in controls) {
            var control = controls[key];
            if($(this).val() == key && $(this).is(":checked")) {
                control.activate();
            } else {
                control.deactivate();
            }
        }
    });