在我的应用程序中,我需要一个包含单选按钮和复选框等HTML元素的面板。
对于使用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>'
];
我在EXT面板中使用此HTML元素控制我的地图行为。出于这个原因,当用户单击一个单选按钮时,我使用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();
}
}
});
但是jQuery无法选择切换类,因为它在一个Javascript变量中进入EXT面板。
我的问题是,如何在Javascript变量中选择HTML元素到EXT面板?换句话说,如何使用事件处理程序将HTML元素放入EXT面板。
处理程序函数在Javascript代码中定义。
答案 0 :(得分:0)
要考虑的事情:
为什么不使用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
如果你真的想在ExtJs中使用纯HTML元素 - 那也没关系。但是为了订阅他们的活动,你实际上需要等到他们将被渲染。因此,您首先需要订阅面板的render
事件。并在处理程序中查找HTML元素(通过其Id或类型的任何内容)并添加侦听器到其事件。但我建议选择#1。