2009-06-10 5 views
0

jQueryを使用してOperaで<optgroup>と問題が発生しました。まず、コードは次のとおりです。<optgroup> 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で動作します。どんな助けも大歓迎です。

+0

この問題は、Opera 10には存在しないようで、Opera 9,6にのみ存在します。 – Ethan

答えて

3

LinuxでjQuery 1.3とOpera 9.64を使用して同じ問題が発生しています。 <optgroup>タグを単に削除すると、リストが魔法のように表示されます。これはオペラのバグではなく、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

私もこれに走りました答えに与えられた私の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をselectメニューに追加してから、optGroupにオプションを追加する必要があります。

関連する問題