Znajdź element html, którego identyfikator zaczyna się od


89

moje pytanie brzmi:

Mam kod HTML na wielu stronach, na każdej z nich użyłem JQgrid (siatka jquery) do wyświetlenia niektórych danych. Wiedziałem, że na każdej z tych stron element przechowujący JQgrid nosi nazwę „LIST_xxx”. Teraz muszę stworzyć javascript, który pobiera ten element „LIST_XXXX” na każdej stronie i wykonuje pewne czynności. Jak mogę wyszukać element według identyfikatora, ale znając tylko jego początkową część (jak wspomniałem wcześniej):

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Mam nadzieję, że wyraziłem się jasno. Dzięki.

Odpowiedzi:


171

Próbować

$('div[id^="list_"]')

Powinno działać


Znacznie lepszy układ tego odniesienia niż dokumentacja jquery.
Yuriy Faktorovich

To działa dobrze, dzięki ... Użyłem go do znalezienia identyfikatora kończącego się określoną wartością, na przykład if ($ ('div [id $ = "' + val + '"]'). Length> 0) wykonaj coś;
raphie

dobrze, działa dobrze dla powyższych prostych identyfikatorów kontrolek. Jak sprawić, by działało w scenariuszach takich jak mam kontrolki z takimi identyfikatorami „txt_0_city”, „txt_1_city”, „txt_2_city”, „txt_3_city” i tak dalej, i chcę zliczać wszystkie takie elementy z identyfikatorami takimi jak „txt _ * _ city "
Rajiv Bhardwaj

@Rajiv jeśli masz kontrolę nad kodem HTML, dobrze byłoby dodać klasę typu „city” do każdego z tych elementów. Możesz je łatwo policzyć.
Glen Little

@Rajiv, jeśli nie możesz poprawić HTML, sprawdź api.jquery.com/multiple-attribute-selector - możesz łączyć selektory. Na przykład $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
Glen Little

22

Musisz użyć atrybutu zaczynającego się od selector , na przykład:

$('[id^=list_]').whatever()

dobrze, działa dobrze dla powyższych prostych identyfikatorów kontrolek. Jak sprawić, by działało w scenariuszach takich jak mam kontrolki z takimi identyfikatorami „txt_0_city”, „txt_1_city”, „txt_2_city”, „txt_3_city” i tak dalej, i chcę zliczać wszystkie takie elementy z identyfikatorami takimi jak „txt _ * _ city "
Rajiv Bhardwaj

Cześć @Rajiv, witamy w stackoverflow. Odpowiedziałem na drugą kopię twojego komentarza.
Glen Little

8

Nadaj temu elementowi wspólną nazwę klasy lub inny atrybut, o który możesz zapytać.


Cześć, dziękuję za odpowiedź, problem z twoją sugestią polega na tym, że może być wiele tabel zawierających JQgrid, więc mogą to być: „LIST_customer”, „LIST_carrier”… i tak dalej. I muszę wybrać oba na podstawie tylko początkowej części ID: "LIST_".
lidermin

1
Rozumiem, ale uczynienie ich wszystkich klasą List wydaje mi się bardziej czytelnym i opisowym podejściem. Do każdego z nich zawsze możesz użyć selektora startów z jQuery, jak pokazują inne odpowiedzi.
Yuriy Faktorovich

@lidermin To, co mówi Yuriy, powinno działać. Dlaczego nie dodać klasy do swoich kontrolek, takich jak „lista”, skoro masz list_ jako prefiks. więc kiedy wybierzesz tę klasę, otrzyma każdą z tych kontrolek. Będzie to najefektywniejszy sposób na zrobienie tego.
Josh Mein

Odpowiedź Jurija zadziała. Możesz dodać tę samą klasę (na przykład „ListsINeedToFind”) do wszystkich elementów „LIST_XXXX”, a następnie wyszukać je za pomocą $('.ListsINeedToFind').
Annabelle

Czasami konieczne jest posiadanie wielu elementów z tą samą klasą, ale różnymi identyfikatorami.
Vincent


1

Aby uzyskać element kończący się określonym id / znakiem

find('[id$=someid]')

Aby uzyskać element zaczynający się od określonego identyfikatora / znaku

find('[id*=anotherid]')

Aby uzyskać element pasujący do określonego identyfikatora / znaku

find('[id^=id]')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.