1
votes

comment puis-je utiliser JQuery avec getElementById?

j'ai cette variable

formEditable = $("#formid").getElementsByTagName("input");

je la veux comme ça

formEditable = document.getElementById("formid").getElementsByTagName("input");


1 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser une seule chaîne de sélection à la place:

$("#formid")[0].getElementsByTagName("input");

Cela vous donnera une collection jQuery de tous les éléments input qui sont les descendants du # formidable .

Si vous deviez utiliser getElementsByTagName à la place, extrayez l'élément du $ ("# formid" ) collection d'abord:

const inputsInsideForm = $('#formid input');

Cela vous donnera une HTMLCollection en direct de ces entrées.


5 commentaires

Mais ID est unique et $ ("# formid") [0] fait quoi? Prend le premier identifiant d'un identifiant? Si getElementsByTagName ("input") [0] - oui, c'est OK, car il renvoie un tableau.


Oui, les ID sont (ou devraient être) uniques, mais $ (selector) renverra toujours une collection jQuery, pas l'élément sous-jacent. Dans ce cas, la collection jQuery contiendra une seule valeur (mais, en général, les collections jQuery peuvent contenir plus de valeurs, voire zéro). Quel que soit le nombre d'éléments de la collection, [0] , [1] , etc. est l'un des moyens d'extraire un élément sous-jacent de la collection - tout comme < code> querySelectorAll


Je veux dire $ ("# formid") [0] mouvement inutile. $ ("# formid") renvoie toujours le premier ID. BTW cela génère une erreur .


Ouais, je pense que c'est assez idiot aussi - je préférerais toujours $ ('# formid input'); de loin. Le problème est que vous ne pouvez pas utiliser getElementsByTagName sur une collection jQuery, et OP essayait d'utiliser getElementsByTagName (peut-être une partie d'une exigence de devoir?) Alors j'ai inclus cela pour montrer comment il pourrait être utilisé en combinaison avec la méthode jQuery de sélection d'éléments, même si cela semble assez idiot


Oui, l'utilisation d'une méthode jQuery sur quelque chose qui n'est pas une collection jQuery provoquera en effet une erreur. ( $ ("# s") [0] n'est, bien sûr, pas une collection jQuery, c'est un élément unique. Je ne sais pas ce que vous attendiez là-bas. #formid ") collection first: * dans la réponse signifiait que l'on aura l'élément élément , pas une collection jQuery)



-2
votes

Vous pouvez simplement utiliser le code ci-dessous:

$("#formid").getElementsByTagName("input");


0 commentaires

2
votes

Si vous avez beaucoup de dans la page, vous devez utiliser

formEditable = document.getElementById("formid").getElementsByTagName("input");

pour des raisons de performances, car les sélecteurs sont évalués de droite à gauche.

Lors de l'utilisation de la requête $ ("# formid input") , tout d'abord tous les sont localisés, puis ils sont filtrés en fonction de leur éléments ancêtres, à la recherche d'un ancêtre avec l'ID formid.

Ce n'est rien d'unique à jQuery, mais votre solution d'origine en tient compte:

// Locate the first element with ID `formid`,
// then query its descendants for `<input>` elements.
formEditable = $("#formid").find("input");

Notez que les requêtes jQuery renvoient un objet jQuery, pas un DOMNodeList d'éléments. Ainsi, la variable formEditable sera un objet jQuery. Pour convertir un objet jQuery en tableau, utilisez la méthode toArray .


0 commentaires