我有一个组合框,根据当前选择,我希望动态文本显示在组合框旁边。
我目前的解决方案有效,但看起来很脆弱。根据组合框在DOM中出现的位置,它可能根本不起作用
以下是我当前解决方案的关键(下拉列表更改时调用):
var child = owner.el.first().next().first().first().first().next().first();
if (child.dom.childNodes.length == 3) {
child.createChild({
tag: 'span',
html: c + Ext.id()
});
} else {
child.last().replaceWith({
tag: 'span',
html: c + Ext.id()
});
}
我最关心的是第一行...这不是寻找插入点的好方法。
这是组合框的图片,旁边显示动态文字:
以下是我查看我想要插入文本的位置:
有人可以建议更好的方法来实现这种效果吗?感谢。
答案 0 :(得分:0)
已在页面中显示跨度并按其ID获取。
Ext.get('combo-suffix').insertHTML(theText);
或者,按其id获取组合框元素并获取/添加其兄弟。
答案 1 :(得分:0)
它总是在一个名为“ext-gen82”的div中吗?
如果是这样,为什么不使用jquery find方法?
$("#ext-gen82").find("ext-gen107");
或者你可以给他们自己的课程来帮助你找到它们:
$(".parentClass").find(".spanElement");
你也可以使用children方法:
$("#ext-gen82").children("span");
答案 2 :(得分:0)
var inserted = false; // need to set this up initially
...
var pos = Ext.getCmp('combo-element-id').el.next('.x-form-trigger');
if (inserted) {
pos.next().update(c + Ext.id());
} else {
inserted = true;
pos.insertSibling({
tag: 'span',
html: c + Ext.id()
}, 'after');
}