2011-06-21 48 views
0

我試過使用$('.className').show();$('.className').hide();,但似乎沒有在IE中工作。是否有另一種按類別在下拉列表中分組選項的方法?我找到this question,但答案是查找值「a」或「c」。如何按類選擇選項?

//if 2 is selected remove C 
case 2 : $('#theOptions2').find('option:contains(c)').remove();break; 
//if 3 is selected remove A 
case 3 : $('#theOptions2').find('option:contains(a)').remove();break; 

我該如何尋找實際的課程?

編輯

<select id="theOptions2"> 
    <option value="a">a</option> 
    <option value="b">b</option> 
    <option value="c">c</option> 
</select> 
+0

我會做這個評論,因爲我不確定它會工作,但'$('#theOptions2選項')。hasClass('。className') .remove();'可以做到這一點。 – Town

+0

你能否提供'#theOptions2'下拉列表的樣本? c&a物品有課嗎? – Rob

+0

[使用jQuery隱藏選擇列表中的選項]可能的重複(http://stackoverflow.com/questions/1271503/hide-options-in-a-select-list-using-jquery) – epascarello

回答

1

您可以將disabled屬性添加到選項,你不想使用:

http://jsfiddle.net/sadmicrowave/Fnvqb/

+0

+1我喜歡這個主意儘管OP可能不喜歡這些選項仍然可見。 – JAAulde

+0

是的,我看到他試圖使用.remove()這表明他想實際從列表中刪除項目。我只是認爲這是一個比刪除DOM元素更少干擾的想法(我不喜歡刪除DOM元素,除非我絕對必須)。 – sadmicrowave

+0

感謝您的投票! – sadmicrowave

1

我從來沒有見過任何人試圖調用隱藏/顯示選項元素之前,我想IE只是不允許你這樣做。選擇可能匹配得很好,但IE不隱藏元素。除去將是相同調用顯示隱藏選擇...

$('.className').remove(); 

$('option.className').remove(); 

$('#theSelect option.className').remove(); 
+0

這似乎工作...但我如何添加? $( '的className')將()。似乎沒有工作。 – MrM

+0

那麼現在你正在反向工作......你可以通過如下方式將選項附加到SELECT上:'$('

+0

我覺得你在那一個上失去了我...... – MrM

0
$('select[class~="cactus"]') 
$('option[class~="cactus"]') 

javascript:(function(){  
    var out = "hi\n"; 
    out += $('*[class~="cactus"]').html2string() ; 
    alert(out); 
})() 

對於未來的參考,而不是描述單詞的html ...顯示實際的html

0

這個演示代碼展示瞭如何實現選項過濾的一種方式......它需要修改以確定哪些候選項目被刪除,因爲我只是爲演示目的而進行了硬編碼,但它會告訴您需要考慮什麼 - 當您刪除項目,你需要考慮它們被添加回來的順序。繞過這個問題的最簡單方法是保留原始列表的副本,然後在未經過濾的情況下刪除剩餘的項目,將其替換爲原來的項目 - 否則您不得不擔心保留排序數據。

因此,這裏是我的下拉定義:

<select id="mySelector"> 
    <option class="group1">Item 1</option> 
    <option class="group2">Item 2</option> 
    <option class="group1">Item 3</option> 
    <option class="group2">Item 4</option> 
    <option class="group1">Item 5</option> 
</select> 

<input type="button" id="removeItems" value="Remove candidate items" /> 
<input type="button" id="addItems" value="Add them back" /> 

,並過濾/恢復項目的jQuery:

$(function() { 

    var originalOptionData; 

    $("#removeItems").bind('click', function() { 
     /* store original copy for rollback */ 
     originalOptionData = $("#mySelector option"); 
     $("#mySelector option.group2").remove(); 
    }); 

    $("#addItems").bind('click', function() { 
     var selector = $("#mySelector"); 
     selector.children().remove(); 
     selector.append(originalOptionData); 
    }); 
}); 

這也可以變成一個選擇濾波器jQuery插件比較簡單,我想,但我沒有那麼遠...