2010-11-16 83 views
0

爲了演示我甚至可以在選項elem上使用Class屬性,我嘗試將類屬性添加到靜態頁面中的select elem選項,並且工作正常。我注意到沒有很多在線資源記錄這個,所以我想我會明確地設置記錄。將類添加到select元素的選定選項

這裏是jQuery代碼試圖將類添加到所選擇的選項

ChangeDdlItemBG : function(obj, compLev) 
{ 
    var ddl = $(obj); 
    var index = ddl.attr('selectedIndex'); 
    switch(compLev) 
    { 
     case ComplianceLevel.Compliant : 
      $(ddl.attr('id') + ': selected').addClass('Compliant'); 
      break; 
     case ComplianceLevel.OtherThanSerious : 
      $(ddl.attr('id') + ': selected').addClass('OtherThanSerious'); 
      break; 
     case ComplianceLevel.Serious : 
      $(ddl.attr('id') + ': selected').addClass('Serious'); 
      break; 
     case ComplianceLevel.Critical : 
      $(ddl.attr('id') + ': selected').addClass('Critical'); 
      break; 
    } 
} 

var ComplianceLevel = 
{ 
    Compliant : function() { return 0; }, 
    OtherThanSerious : function() { return 1; }, 
    Serious : function() { return 2; }, 
    Critical : function() { return 3; }, 
}; 

新的信息,我發現原因沒有發生在價值一個簡單的錯誤傳遞在compLev的。但是,現在它通過正確大小寫的代碼運行,並且對該項目的顏色沒有任何影響。

+1

所以這不是一個問題。 – shoebox639 2010-11-16 20:09:35

+0

我很抱歉,這是一個問題......上面貼出的代碼並不符合我的預期。這些類聲明瞭背景顏色規則來更改所選項目的背景顏色。我是否需要回發才能顯示? – 2010-11-16 20:12:24

+0

@Mthethew您需要在SELECT元素的change事件上運行該函數。在這種情況下,您不需要傳入對該元素的引用,因爲'this'值指向它。 – 2010-11-16 20:33:29

回答

1

你當然可以減少冗餘。

而且,你必須運行的功能,爲了它們的返回值與compLev比較:

function(obj, compLev) { 

    var optClass = ""; 

    switch (compLev) { 
    case ComplianceLevel.Compliant() : 
     optClass = 'Compliant'; 
     break; 
    case ComplianceLevel.OtherThanSerious() : 
     optClass = 'OtherThanSerious'; 
     break; 
    case ComplianceLevel.Serious() : 
     optClass = 'Serious'; 
     break; 
    case ComplianceLevel.Critical() : 
     optClass = 'Critical'; 
     break; 
    } 

    $(obj).find("option:selected").addClass(optClass).siblings().removeClass(); 

} 
+0

所以這個想法是將事件綁定到select elm然後在回調函數中執行更改? – 2010-11-16 20:39:10

+0

也銘記在心,我在select elm的onchange事件中爲標記運行函數。我只是不認爲這是必要的代碼發佈。 – 2010-11-16 20:39:58

+0

@Mthethew您是否希望只有選定的選項才具有類別設置?或者每個選項? – 2010-11-16 20:43:23

0

它看起來像你的選擇器有一個錯字。除非ddl.attr('id')是一種元素,否則您的代碼不會將類添加到任何內容中。我想你想要$('#' + ddl.attr('id') + ':selected')

+0

我最初嘗試過你的風格。它會產生一個語法異常。 – 2010-11-16 20:45:36

相關問題