/ / Czy selektor $ („# myform”) zwróci tablicę? - javascript, jquery

Czy selektor $ ("# myform" zwróci tablicę? - javascript, jquery

Jestem nowy w javascript i jQuery i właśnie czytam kod, taki jak $("#myForm").get(0).submit()

O ile rozumiem, plik myForm jest identyfikatorem dla <form> i powinien to być unikalny identyfikator. Dlaczego więc ten kod używa get(0) który wydaje się, że selektor zwraca tablicę. Czy będzie więcej niż jeden element HTML o tym samym identyfikatorze myForm ?

Odpowiedzi:

1 dla odpowiedzi № 1

jquery zawsze zwraca tablicę, ale możesz pracować z nią jak z pojedynczym obiektem.

na przykład.:

$("#someID").submit();

lub dowolna inna funkcja jquery:

$("#someID").html("<h1>test</h1>");

możesz również pobrać element javascript za pomocą:

$("#someID")[0];

1 dla odpowiedzi nr 2

W przypadku selektorów identyfikatorów jQuery używa funkcji JavaScript document.getElementById()

To, co robi, to wybiera plik pojedynczy element o podanym atrybucie id. Jquery zwraca go opakowanym w obiekt niestandardowy. Z blog devx:

Selektory zwracają obiekt jQuery znany jako„opakowany zestaw”, czyli struktura przypominająca tablicę, która zawiera wszystkie wybrane elementy DOM. Możesz iterować po opakowanym zestawie, takim jak tablica lub dostęp poszczególne elementy poprzez indeksator (na przykład $ (sel) [0]). Jeszcze co ważne, możesz również zastosować funkcje jQuery do wszystkich wybrane elementy.


1 dla odpowiedzi nr 3

O ile rozumiem, myForm jest identyfikatorem pliku <form> i powinien to być unikalny identyfikator. Dlaczego więc ten kod używa get (0) który wydaje się, że selektor zwraca tablicę.

To jest to samo, co to:

$("#myForm")[0].submit();

Należy zauważyć, że selektor jQuery daje obiekt jQuery i można na nim zastosować tylko metody jQuery.

Ale w twoim przypadku wydaje się, że chcesz uruchomić natywny DOM submit zdarzenie, które można zastosować tylko na węzłach dom, a nie na obiektach jQuery. Więc, .get(0) zwraca węzeł DOM i .submit() zostało na nim wywołane zdarzenie. Chociaż można to uprościć w javascript jako:

document.querySelector("#myForm").submit();

lub

document.getElementById("myForm").submit();

Jeśli dojdziesz do .get() dokumenty:

Opis: Pobierz jeden z elementów dopasowanych przez obiekt jQuery. The .get() metoda przyznaje dostęp do węzłów DOM leżących u podstaw każdego obiektu jQuery. Jeśli wartość indeksu jest poza zakresem - mniejsza niż ujemna liczba elementów lub równa lub większa niż liczba elementów - zwraca wartość undefined.


1 dla odpowiedzi nr 4

To jquery selector zwraca tablicę. Jeśli DOM jest poprawny, co oznacza, że ​​identyfikator jest unikalny dla każdego elementu, na pewno możesz go użyć

   $("#form_id").submit()

zamiast

   $("#form_id").get(0).submit()

Jednak $ ("# form_id") zwraca obiekt jquery, podczas gdy $ ("# form_id"). Get (0) zwraca element DOM. obiekt jquery może używać funkcji jquery.

  $("#id")//jquery object array
$("#id")[0]//first element of this array
$("#id").get(0)//first element of this array, DOM element
$("#id").eq(0)//first element of this array, jquery object

0 dla odpowiedzi № 5

Jak widać w dokumentacji: https://api.jquery.com/submit/ możesz wykonać funkcję przesyłania bezpośrednio do obiektu formularza:

$("#myForm").submit();

Ponadto, jak możesz przeczytać tutaj https://api.jquery.com/get/

Każdy obiekt jQuery również podszywa się pod tablicę