Я считаю, что jQuery будет генерировать DOM следующим образом:
<div id="date">
<select id="date">
<option value="0">- - SELECT - -</option>
</select>
<option value="">foo</option>
<option value="">bar</option>
etc...
</div>
Так как он автоматически закрывает <select>
после первого .append()
. После этого вы добавляете опции к <div id="#date"/>
, а не к <select>
, который был добавлен. Я не думаю, что окончательное закрытие </select>
на самом деле тоже что-нибудь сделает.
Если вы действительно хотите использовать add, следующий JavaScript добавит опции к правильному узлу:
// dummy data object for example
var data = new Array(new Array(), new Array());
data[0].date_time = 2011;
data[1].date_time = 2012;
var options = new Array();
$.each(data, function(index, option) {
options.push('<option value="' + index + '">'+ option.date_time +'</option>');
});
$('<select id="date"/>').append(options.join('')).appendTo('#date');
Предполагая существующий HTML:
<div id="date"></div>
Однако это приводит к накладным расходам, поскольку добавление происходит дважды. Более быстрый подход заключается в создании разметки options , как уже ответил ShankarSangoli