0

<optgroup>在使用 jQuery 的 Opera 中遇到问题。首先,这是代码:

// 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。任何帮助深表感谢。

4

2 回答 2

3

我在 Linux 上使用 jQuery 1.3 和 Opera 9.64 看到了同样的问题。如果我只是删除 <optgroup> 标记,列表就会神奇地出现。

做一些挖掘,看起来这是一个 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);
于 2009-07-16T00:52:27.150 回答
0

我的PHP Form Class中的 hierselect 菜单也遇到了这个问题,并且答案中给出的解决方法代码不起作用,但是这样做了:

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

optGroup 必须先附加到选择菜单,然后将选项附加到 optGroup。

于 2011-10-25T08:00:36.460 回答