Napisałem kod, który w zasadzie wybiera wszystkie input type=text
elementy w ten sposób:
$('.sys input[type=text]').each(function () {}
Jak mogę to zmienić, aby wybrać input[type=text]
lub select
?
javascript
jquery
Jacek
źródło
źródło
context form
używa thefind form
,find form
jest bardziej wydajne niżcontext form
(uniknięto jednej funkcji wywołania). Dotyczy to prawie wszystkich używanych selektorów. Wtedy IMOfind form
jest bardziej wydajne niż thenormal CSS selector
, ponieważ obie części selektora są względem węzła głównego, gdzie wfind form
, tylko.sys
część jest względem niego, wtedyinput[type=text],select
jest wykonywana na znacznie mniejszym zestawie elementów więc może być szybsza (ale trzeba to zweryfikować testami)$
połączenia jest tak ważne dla Twojej aplikacji, proszę całkowicie unikać używania jQuery :). Ta odpowiedź była próbą odpowiedzi na pytanie OP, gdyby to była kwestia wydajności, to tej odpowiedzi nie byłoby tutaj. W każdym razie dziękuję za komentarz :), doceniam$
call, ale wszystkich$
wywołań obecnych w jednej aplikacji. IMO, kiedy masz różne sposoby na zrobienie tego samego, zawsze staram się wybierać ten, który działa lepiej bc.slow performance
===unhappy users
. Ponadto możemy zarówno odpowiedzieć na pytanie OP, podając wiele odpowiedzi (tak jak ty), jak i przedstawić zalety / niedogodności z każdego z nich (tak jak to zrobiłem w komentarzu). IMO ważne jest, aby zauważyć, dlaczego wszystkie odpowiedzi są różne, zapewniając ten sam wynik. Możemy również napisaćJavaScript
performance
$
, klasyfikuj specjalnie swoje elementy div i używajdocument.getElemenById/ElementsByClassName
zamiast przechodzenia przez$
wiele sprawdzania / parsowania ciągów twojego selektora, jQuery nie jest sławne za swoją wydajną bibliotekę. I szczerze mówiąc, nie widziałem, aby aplikacja zwalniała z powodu dzwonienia o$
jedną za dużo, jeśli masz stronę internetową, która ma ten problem, pokaż mi, jestem bardzo zainteresowany :)EDYCJA: W rzeczywistości powyższy kod jest równoważny selektorowi dzieci,
.sys > input[type=text]
jeśli chcesz, aby element.sys input[type=text]
potomny select ( ) musiał użyć opcji podanych przez @NiftyDude.Więcej informacji:
jQuery.children()
źródło
chilren
zamiast tego wpisałeśchildren
Jeśli masz wiele danych wejściowych jako tekst w formularzu lub tabeli, przez które musisz iterować, zrobiłem to:
Sprawdziłem każde wejście, aby sprawdzić, czy typ jest ustawiony na „tekst”, a następnie pobierze ten element i zapisze go na liście jQuery. Następnie przejrzałby tę listę. Możesz ustawić zmienną tymczasową dla bieżącej iteracji w następujący sposób:
Spowoduje to ustawienie bieżącego elementu na bieżącą iterację dla każdej pętli. Następnie możesz zrobić, co chcesz ze zmienną tymczasową.
Mam nadzieję, że to pomoże każdemu!
źródło
do zapętlania:
źródło