简体   繁体   English

Elements事件处理程序进入EXT.js面板

[英]Elements event handler into EXT.js panel

In my application I need a panel that has HTML elements like radio button and checkbox. 在我的应用程序中,我需要一个包含HTML元素(如单选按钮和复选框)的面板。

For wrapping elements (radio button and etc.) with EXT panel I put these elements into a variable and put this variable into HTML feature of EXT panel. 对于用EXT面板包装元素(单选按钮等),我将这些元素放入变量中,然后将此变量放入EXT面板的HTML功能中。

CODE

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>'
];

I control my map behaviors with this HTML elements in the EXT panel. 我使用EXT面板中的HTML元素来控制地图行为。 For this reason when user clicks a radio button I use jQuery to understand that it was clicked. 因此,当用户单击单选按钮时,我使用jQuery来了解它是否已被单击。

jQuery jQuery的

$(".toggle").click(function(){
    for(key in controls) {
        var control = controls[key];
        if($(this).val() == key && $(this).is(":checked")) {
            control.activate();
        } else {
            control.deactivate();
        }
    }
});

But jQuery can't select toggle class because it is in a Javascript variable into EXT panel. 但是jQuery无法选择切换类,因为它位于EXT面板中的Javascript变量中。

My question is, how can I select HTML elements in Javascript variables into an EXT panel? 我的问题是,如何在EXT面板中选择Javascript变量中的HTML元素? In other words, how can I use event handlers for putting HTML elements into an EXT panel. 换句话说,如何使用事件处理程序将HTML元素放入EXT面板。

The handler function is defined in the Javascript code. 处理程序函数在Javascript代码中定义。

Couple things to consider: 需要考虑的几件事:

  1. Why don't you use ExtJs visual elements like Ext.form.field.Radio http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.Radio and Ext.form.field.Checkbox http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.Checkbox 您为什么不使用ExtJs可视元素,例如Ext.form.field.Radio http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.Radio和Ext。 form.field.Checkbox http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.Checkbox

  2. If you really want to use plain HTML elements inside ExtJs - that's fine too. 如果您真的想在ExtJs中使用纯HTML元素-也可以。 But in order to subscribe to their events you actually need to wait until they will be rendered. 但是,为了订阅他们的事件,您实际上需要等待直到它们被渲染。 So you first need to subscribe to render event of your panel. 因此,您首先需要订阅面板的render事件。 And in the handler find HTML elements (by their Id or by type of whatever) and add listener to their events. 然后在处理程序中找到HTML元素(按其ID或任何类型),并将侦听器添加到其事件中。 But I would recommend to go with #1. 但是我建议选择#1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM