Элементы cat
не являются дубликатами только потому, что они имеют одинаковое текстовое содержимое.Они по-прежнему являются элементами со своей собственной, другой идентичностью, и, следовательно, unique
не удалит их.
Вместо этого вам придется читать текстовое содержимое в массив, а затем удалять дубликаты из массива.of-String.
К сожалению, вы также не можете использовать unique
впоследствии для Array-of-String, потому что он поддерживает только элементы элемента DOM.
Я бы просто сделалудаление дублирования при построении списка:
var cats= [];
$('cat', xmldoc).each(function() {
var text= $(this).text();
if ($.inArray(text, cats)===-1)
cats.push(text);
});
Затем добавьте каждую опцию к выбору:
$.each(cats, function() {
$('select').append($('<option>').attr('val', this).attr('text', this));
});
Текст опции должен быть установлен с использованием attr
и not путем передачи всего элемента в виде HTML.Когда вы создаете HTML из текста, вы должны экранировать HTML от любых текстовых строк, которые вы вставляете в HTML, иначе у вас будут потенциальные дыры в безопасности межсайтовых сценариев.