Как я могу использовать JQuery с getElementsById? - PullRequest
1 голос
/ 29 января 2020

у меня есть эта переменная

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

я хочу вот так

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

Ответы [ 3 ]

2 голосов
/ 29 января 2020

Если у вас много <input> с на странице, вы должны использовать

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

из соображений производительности, поскольку селекторы оцениваются справа налево.

При использовании query $("#formid input"), сначала все <input> s расположены, затем они фильтруются по элементам своих предков, ища предка с идентификатором formid.

Это не уникально для jQuery, но Ваше оригинальное решение фактически учитывает это:

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

Обратите внимание, что jQuery запросов возвращают jQuery Объект, а не DOMNodeList элементов. Таким образом, переменная formEditable будет jQuery объектом. Чтобы преобразовать jQuery Object в массив, используйте метод toArray.

1 голос
/ 29 января 2020

Вместо этого вы можете использовать одну строку селектора:

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

Это даст вам jQuery коллекцию всех input элементов, которые являются потомками элемента #formid.

Если у вас было для использования getElementsByTagName вместо этого, сначала извлеките элемент из коллекции $("#formid"):

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

Это даст вам живую HTMLCollection этих входов.

0 голосов
/ 29 января 2020

Вы можете просто использовать ниже код:

$("#formid").getElementsByTagName("input");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...