0

我在解析的 XML 数组上使用以下代码:

$(this).find("cp_group").each(function() {
    $("select#comp_1").append('<optgroup label="' + $(this).attr('label') + '"><option>' + $(this).find("cmp").map(function() {
        return $(this).text();
    }).get().join("</option><option>") + $(this).append('</option></optgroup>'));
});​

我在每个选项组的最后一个选项中得到一个不需要的 [object Object],如下所示:

<select name="comp_1" id="comp_1">
<optgroup label="Combat">
<option>Arme</option>
<option>Arts martiaux</option>
<option>Esquive</option>
<option>Feinte</option>
<option>Parade</option>
<option>Lutte[object Object]</option>

我不明白这个 [object Object] 是从哪里来的,我没有做到不得到它或删除它。谢谢你的帮助。

4

2 回答 2

2

它来自+ $(this).append(...). 你只想要这个+'</option....'部分,没有那个 jQuery 包装器。

于 2012-05-12T22:07:51.687 回答
1

您误解了 jQuery,尤其是 jQuery 的append工作原理。当您使用 jQuery 操作事物时,您不是在处理标记(大部分),而是在处理对象(DOM 元素)。

这应该解决它:

$(this).find("cp_group").each(function() {
    // Get this entry
    var $this = $(this);

    // Create the optgroup
    var optgroup = $('<optgroup label="' + $this.attr('label') + '">');

    // Fill it in
    $this.find("cmp").each(function() {
        $("<option>").text($(this).text()).appendTo(optgroup);
    });

    // Append it to the select
    $("select#comp_1").append(optgroup);
});​
于 2012-05-12T22:11:56.627 回答