我在使用jQuery的Opera中遇到<optgroup>
问题。首先,这是代码:
// 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。非常感谢任何帮助。
答案 0 :(得分:3)
我在Linux上使用jQuery 1.3和Opera 9.64时遇到了同样的问题。如果我只是删除&lt; optgroup&gt;标签,列表神奇地出现。
进行一些挖掘,看起来这是一个Opera bug,而不是一个jQuery bug: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);
答案 1 :(得分: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的选项附加。