我浪费了整整一天试图解决它,我想我已经钉了它,但仍然不确定到底是什么:/
我有一个js文件,我为<option>
生成<select>
&#39;
_htmlString = '<option value="' + __hex_value + '" data-class="' + _cbtn.substring(1, 13) + '">' + __hex_value + '</option>\n';
jQuery("#colourtiles").append(_htmlString);
#colourtiles
是<select>
的ID。
我在html中也有3个静态选项。
现在,在另一个脚本中,我这样做:
[].slice.call( this.el.children ).forEach( function(el) {
console.info(el);
if( el.disabled ) { return; }
var tag = el.tagName.toLowerCase();
if( tag === 'option' ) {
options += createOptionHTML(el);
}
else if( tag === 'optgroup' ) {
options += '<li class="cs-optgroup"><span>' + el.label + '</span><ul>';
[].slice.call( el.children ).forEach( function(opt) {
options += createOptionHTML(opt);
} )
options += '</ul></li>';
}
} );
...但这只会渲染3个元素,完全忽略了.append()添加的元素。
要清楚的是,当我在控制台中返回<select>
时,它就在那里。
但我注意到,this.el.children.length
是...... 3!
所以它看起来像1)jQuery没有更新.length,并且2)forEach()依赖它,因此失败。 我是对的吗?这是jQuery中的错误,还是我是傻瓜? 我该如何解决这个问题?
非常感谢所有答案。 马尔钦
答案 0 :(得分:0)
首先,我会像这样附加每个选项
$("<option/>")
.val(__hex_value)
.data("class",_cbtn.substring(1, 13))
.html(__hex_value)
.appendTo("#colourtiles");
我不知道你的代码中有el
是什么,所以我真的无法给出更多答案,但如果你想循环选择该选项中的每个选项,请使用{{1}它将包括你在DOM中所做的事情:
.each()