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>

この [オブジェクト オブジェクト] がどこから来たのか理解できず、それを取得したり削除したりすることはできませんでした。助けてくれてありがとう。

4

2 に答える 2

2

から来てい+ $(this).append(...)ます。+'</option....'そのjQueryラッパーなしで、その部分が欲しいだけです。

于 2012-05-12T22:07:51.687 に答える
1

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 に答える