Mam obiekt z parami klucz / wartość opcji, które chcę ukryć / usunąć z listy wyboru. Żaden z poniższych selektorów opcji nie działa. czego mi brakuje?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
hitfactory
źródło
źródło
Odpowiedzi:
Ale warto, druga forma (z
@
) nie istnieje w jQuery 1.3. Pierwsza nie działa, ponieważ najwyraźniej spodziewasz się interpolacji zmiennej. Spróbuj tego:Zauważ, że prawdopodobnie nastąpi to na różne okropne sposoby, jeśli
title
zawiera metaznaki selektora jQuery.źródło
Nie możesz tego zrobić x-browser. Jeśli sobie przypominam, to znaczy, że ma problemy. Najłatwiejszą rzeczą do zrobienia jest zachowanie sklonowanej kopii zaznaczenia przed usunięciem elementów, co pozwala na łatwe usunięcie, a następnie dodanie brakujących elementów.
źródło
Znalazłem lepszy sposób i jest to bardzo proste:
Aby wyświetlić ponownie, po prostu znajdź tę opcję (nie zakres) i
$("option_you_want_to_show").unwrap()
.Został przetestowany na Chrome i Firefox.
źródło
$("select").val("0").trigger("change")
. Łatwiejszym rozwiązaniem jest toOto mój spin, prawdopodobnie trochę szybszy dzięki natywnym metodom DOM
źródło
Działa to w przeglądarce Firefox 3.0, ale nie w MSIE 8 ani w przeglądarce Opera 9.62:
Ale raczej ukrywając opcję, można ją po prostu wyłączyć:
Pierwsza z dwóch powyższych linii dotyczy przeglądarki Firefox i przekazuje fokus do drugiej opcji (zakładając, że ma wartość = „2”). Jeśli ją pominiemy, opcja jest wyłączona, ale nadal wyświetla opcję „włączony”, zanim ją upuścimy. Dlatego skupiamy się na innej opcji, aby tego uniknąć.
źródło
MOŻNA to zrobić w przeglądarce; wystarczy programowanie niestandardowe. Proszę zobaczyć moje skrzypce na http://jsfiddle.net/sablefoste/YVMzt/6/ . Został przetestowany pod kątem działania w przeglądarkach Chrome, Firefox, Internet Explorer i Safari.
Krótko mówiąc, mam ukryte pole,
#optionstore
które przechowuje tablicę sekwencyjnie (ponieważ nie można mieć tablic asocjacyjnych w JavaScript). Następnie, gdy zmienisz kategorię, analizuje istniejące opcje (tylko za pierwszym razem) zapisuje je#optionstore
, usuwa wszystko i odkłada tylko te powiązane z kategorią.UWAGA: stworzyłem to, aby umożliwić różne wartości opcji z tekstu wyświetlanego użytkownikowi, więc jest bardzo elastyczny.
HTML:
JavaScript / jQuery:
źródło
resultgood
to po prostu sprawdzenie, czy jakikolwiekoptionlisting
został dodany. jeśli tak było,<option>
zwracana jest lista s. Jeśli nie, nic nie jest zwracane, co byś chciał, gdybyś przypadkowo dołączył klasę, której w rzeczywistości nie było (w tym przykładzie, powiedzmy, pod-Food6). Aby zwrócić puste miejsce na liście rozwijanej, zmień wiersz deklaracji na początku funkcji navar optionlisting="<option value=''></option>";
.data
atrybutu; jest bardziej poprawna semantycznie.Najlepszym rozwiązaniem jest ustawienie disabled = true na elementach opcji, które chcesz wyłączyć, a następnie w ustawieniu CSS
W ten sposób, nawet jeśli przeglądarka nie obsługuje ukrywania wyłączonego elementu, nadal nie można go wybrać… ale w przeglądarkach, które go obsługują, będą ukryte.
źródło
Spójrz na to pytanie i odpowiedzi -
Wyłącz wybrane opcje ...
Patrząc na swój kod, może być konieczne zacytowanie wartości atrybutu
z selektorów atrybutów jQuery
EDYTOWAĆ:
Właśnie zdałem sobie sprawę, że otrzymujesz tytuł z parametru funkcji, w takim przypadku składnia powinna być
źródło
W nawiązaniu do sugestii redsquare, skończyłem tak:
a potem odwrócić to:
źródło
Problem polega na tym, że program Internet Explorer nie wydaje się obsługiwać metod ukrywania i pokazywania wybranych opcji. Chciałem ukryć wszystkie opcje mojego wyboru ddlReasonCode, które nie miały aktualnie wybranego typu jako wartości atrybutu „attType”.
Podczas gdy piękny Chrome był całkiem zadowolony z:
Tego właśnie wymaga IE (dzieci, nie próbuj tego w CHROME :-)):
Znalazłem ten pomysł na opakowanie na http://ajax911.com/hide-options-selecbox-jquery/
źródło
Po przetestowaniu rozwiązania opublikowane powyżej przez różne, w tym chaos, do ukrywania elementów, działają teraz w najnowszych wersjach Firefoksa (66.0.4), Chrome (74.0.3729.169) i Edge (42.17134.1.0)
W przypadku IE to nie działa, jednak możesz wyłączyć tę opcję
a następnie wymuś wybór innej wartości.
Uwaga: w przypadku wyłączonej opcji wartość z listy rozwijanej będzie teraz równa zeru, a nie wartość wybranej opcji, jeśli jest wyłączona.
źródło
Wygląda na to, że musisz również zaktualizować atrybut „selected”. W przeciwnym razie aktualnie wybrana opcja może nadal być wyświetlana - chociaż prawdopodobnie zniknie, gdy faktycznie przejdziesz do wyboru opcji (to właśnie zrobiła dla mnie): Spróbuj to zrobić:
źródło
Próbowałem ukryć opcje z jednej listy wyboru na podstawie wybranej opcji z innej listy wyboru. To działało w Firefoksie3, ale nie w Internet Explorerze 6. Mam tutaj kilka pomysłów i mam rozwiązanie, więc chciałbym się podzielić:
Kod JavaScript
HTML
Został sprawdzony jako działający w przeglądarkach Firefox 3 i Internet Explorer 6.
źródło
id
atrybutu powinna być unikalna: Dichlorowodorek tego atrybutu ustawia nazwę elementu. Ta nazwa musi być unikalna w dokumencie.Aby uniknąć łączenia ciągów znaków, możesz użyć jQuery.grep
źródło
Prawdopodobnie nie jest tak elegancki ani tak wielokrotnego użytku jak wtyczka jquery. ale innym podejściem jest po prostu zapisanie elementów opcji i zamiana ich w razie potrzeby:
zrób to, aby użyć obiektu:
źródło
Zaimplementowałem rozwiązanie wykorzystujące funkcję filtrującą combobox (
<select>
) na podstawie niestandardowych atrybutów danych. To rozwiązanie obsługuje:<option>
do pokazania, kiedy filtr pozostawiłby pole wyboru puste.<option>
elementy bez atrybutu filtru danych pozostają nietknięte.Testowane z jQuery 2.1.4 i Firefox, Chrome, Safari i IE 10+.
Oto przykładowy kod HTML:
Kod jQuery do filtrowania:
Aby go użyć, po prostu wywołaj funkcję z wartością, którą chcesz zachować.
Następnie wynikowy wybór będzie:
Oryginalne elementy są przechowywane przez funkcję data (), więc kolejne wywołania będą dodawać i usuwać prawidłowe elementy.
źródło
Odpowiedź wskazuje, że
@
jest niepoprawna dla nowszych iteracji jQuery. Chociaż to prawda, niektóre starsze IE nadal nie ukrywają elementów opcji. Dla każdego, kto ma do czynienia z ukrywaniem elementów opcji w tych wersjach, których to dotyczy, opublikowałem tutaj obejście:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
Po prostu zawiń go rozpiętością i wymień na pokaz.
źródło
Każdy, kto natknie się na to pytanie, może również rozważyć użycie Chosen , który znacznie rozszerza możliwości selekcji.
źródło
Następnie w swoim css upewnij się, że masz
źródło
Wiem, że udzielono odpowiedzi na to pytanie. Ale moje wymagania były nieco inne. Zamiast wartości chciałem filtrować według tekstu. Więc zmodyfikowałem odpowiedź autorstwa @William Herry w ten sposób.
W ten sposób możesz użyć wartości również zastępując takie elementy
źródło
W przypadku opcji ukrywania w wybierz użyj:
Gdzie option_node jest HTMLOptionElement
PS: Nie używam JQuery, ale zgaduję, że zadziała:
źródło
Uważam, że najlepiej jest po prostu całkowicie usunąć DOM.
Zgodność z różnymi przeglądarkami. Działa również na IE11
źródło
opcja: eq (0) - ukryj opcję pod indeksem „0” w polu wyboru.
źródło
Możesz pokazać / ukryć za pomocą nazwy wartości lub klasy . Sprawdź poniższy link z działającym przykładem.
Pokaż / ukryj wybrane opcje jquery z wartością lub nazwą klasy.
źródło
$ ("# ddtypeoftraining opcja [wartość = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('odśwież');
źródło