2012-05-12 2 views
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] в последней опции каждой группы опций следующим образом:

<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] пришли и я не достиг, чтобы не получить его или удалить его. Спасибо за помощь.

+0

Можете ли вы сделать скрипку в http://jsfiddle.net? – gdoron

ответ

2

Это исходит от + $(this).append(...). Вам просто нужна часть +'</option....', без этой обертки jQuery.

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); 
});​ 
Смежные вопросы