Во-первых,
$(this).appendTo($(groups[1]));
можно изменить на
$(this).appendTo(groups[1]);
вам не нужно снова оборачивать элемент в объект jQuery, чтобы добавить его, HTMLElement будет работать нормально.
У вас есть HTML-код, который вы используете, и где находятся ваши <option>
элементы, значения которых вы проверяете?
EDIT:
Я немного переписал ваш код, и это работает правильно (добавление NB не будет работать в IE6, и я верю 7 и 8 - в IE свойство innerHTML для элемента select доступно только для чтения, поэтому используйте createElement или конструктор Option создать параметры),
Рабочий пример . добавьте / edit к URL, чтобы увидеть код. У меня есть элементы option в массиве в рабочем примере, я предполагаю, что они у вас похожи.
var groups = $("optgroup");
$('options').each(function() {
var $this = $(this);
var val = $this.val();
if (tmp.indexOf(val) !== -1) {
$this.appendTo(groups[0]);
}
else if (val.length > 0) {
$this.appendTo(groups[1]);
}
});