<optgroup> в Opera с использованием jQuery - PullRequest
0 голосов
/ 10 июня 2009

У меня проблема с <optgroup> в Opera с использованием jQuery. Во-первых, вот код:

// returns a jQuery optgroup object
function getSpaceOptGroup(locationName) {
    var location = locations.first(function(l) {
        return l.name == locationName;
    });

    var optGroup = $("<optgroup label='" + location.name + "'></optgroup>");

    $.each(location.spaces, function(i,x) {
        optGroup.append("<option value='" + x.id + "'>" + x.name + "</option>");
    });

    return optGroup;
}

Эта функция возвращает простой apend(). Что происходит, так это то, что появляется только метка <opgroup> и ни один из параметров, но только в Opera Работает в FF, Safari и IE. Любая помощь очень ценится.

Ответы [ 2 ]

3 голосов
/ 16 июля 2009

Я вижу ту же проблему при использовании jQuery 1.3 и Opera 9.64 в Linux. Если я просто удаляю теги

, список волшебным образом появляется.

Немного копая, похоже, что это ошибка Opera, а не ошибка jQuery: http://dev.jquery.com/ticket/3040

Существует также обходной путь: http://dev.jquery.com/ticket/3040#comment:7

// Do not use:
var optGroup = $("<optgroup></optgroup>");
var option = $("<option></option>");
// But:
var optGroup = $(document.createElement("optgroup"));
var option = $(document.createElement("option"));
// Then everything works as expected
optGroup.attr("label", "hello").append(
    option.append("foo"),
    option.clone().text("bar"));
// with append of course
$("select#test5").append(optGroup);
0 голосов
/ 25 октября 2011

Я также столкнулся с этой проблемой для меню hierselect в моем PHP Form Class , и указанный в ответе обходной код не сработал, но это сработало:

var optGroup = $(document.createElement("optgroup")).attr("label", "hello");
$("select#test5").append(optGroup);
optGroup.append($(document.createElement("option")).val("foo").html("bar"));

optGroup необходимо сначала добавить в меню выбора, а затем добавить опции (опции) к optGroup.

...