2010-05-19 15 views
5

Mam listy wyboru, które ma wiele opcji. W zależności od niektórych danych chcę ukryć kilka opcji z listy wyboru. Aby ukryć opcje z listy select Pisałem jquery jakpróbuje ukryć opcje z listy wyboru .. nie działa na chrome i np.

$('#selectlist1 option').each(function(){ 

    $(this).hide(); 

}) 

Ale ten kod wydaje się działać tylko dla firefox i jej nie działa w Chrome i IE. Natomiast jeśli napiszę

$('#selectlist1').hide(); 

działa dla wszystkich przeglądarek. Jakikolwiek wskaźnik, gdzie powinienem patrzeć?

+0

Różnica polega na tym, że próbujesz ukryć poszczególne elementy 'option' w przeciwieństwie do pełnego elementu' select' . Hide() również może nie być tu poprawną metodą, spróbuj Remove(). –

+0

Tak, rozumiem to. Moje pytanie brzmi: dlaczego hide() nie pracuje nad poszczególnymi opcjami. – ninja

+0

http://stackoverflow.com/a/21085171/1544708 możesz wypróbować to proste rozwiązanie. –

Odpowiedz

1

Nie można ukryć poszczególnych elementów opcji x-browser. Jedynym rozwiązaniem jest zastąpienie zaznaczenia nowym elementem za pomocą tylko opcji, które chcesz wyświetlić.

Zobacz ten drugi question

+0

Co masz na myśli przez "x-przeglądarkę"? Wypróbowałem proponowane przez ciebie rozwiązanie. Problem polega na tym, że używam drupala i przechowuję niektóre dane w pamięci podręcznej, aby zweryfikować strukturę formularza. Więc jeśli usunę jakiś element i doda go później, spowoduje to błąd podczas sprawdzania poprawności. Więc myślałem, że przy użyciu metody jQuery pokazać/ukryć mogę to zrobić bez błędu sprawdzania poprawności. Ale wygląda na to, że nie jest to obsługiwane w żadnej innej przeglądarce niż mozilla. – ninja

+0

x-browser = przeglądarka (chrome, ff, np. Opera itp.) – redsquare

-2

Dla każdego, kto miał do czynienia z ukrycia elementów opcjonalnych w tych wersjach dotkniętych, Zamieściłem obejście tutaj, które nie klonowania lub usunąć opcje ale otacza rozpiętości wokół nich, co jest zapewne znacznie łatwiejsze do czynienia z:

http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/

+0

Niestety ta dawka nie działa z chromem, który nie rozpoznaje zakresu w obrębie wybranego – nodrog

+0

Ten link już nie działa. – David

2

Oto stosunkowo zwięzły sposób odbudować listy wyboru na żądanie z nowych opcji. Działa to dla dynamicznie wstawianych opcji (co jest tym, co IE i Chrome mają problem z pokazywaniem i ukrywaniem)

$().ready(function() { 
    //store a reference 
    var select = $('#myselect'); 
}); 

function rebuild_select(arr_new_options) { 
    var parent = select.parent(); 
    select.empty(); 
    var clone = select.clone(); 
    select.remove(); 
    for(var x=0; x < arr_new_options.length; x++) { 
     clone.append(arr_new_options[x]); 
    } 
    parent.append(clone); 
    select = clone; 
} 
Powiązane problemy