Нахождение ФОРМЫ, что элемент принадлежит в JavaScript

Когда ОС просит ваше приложение показать страницу, оно должно показать страницу. Он не может сказать «подождите минуту или две, пока я разговариваю с этим удаленным сервером через ненадежное сетевое соединение». Он должен показать страницу прямо сейчас.

Итак, я рекомендую открыть заставку - например, логотип вашей компании или приложения. Когда появится заставка, позвоните по номеру InitializeAppAsync и, в зависимости от результата, переключитесь на страницу входа в систему или стартовую страницу или на страницу с удобной офлайн-ошибкой.

12
задан Magnus Smith 21 January 2009 в 13:37
поделиться

6 ответов

К форме, которой принадлежит элемент формы, можно получить доступ через element.form.

Когда элемент, который Вы используете в качестве ссылки, не является элементом формы, необходимо было бы все еще выполнить итерации через parentElement или используйте некоторый другой вид селектора.

Используя прототип, Вы могли упростить это при помощи Element.up ():

$(element).up('form');

Другое ответы к этому вопросу указали, как сделать то же в jQuery.

17
ответ дан 2 December 2019 в 03:22
поделиться

Угадайте, что необходимо выполнить итерации через все элементы затем. Можно попытаться использовать jQuery:

$("input").parent("form")

http://docs.jquery.com/Traversing/parent#expr

7
ответ дан 2 December 2019 в 03:22
поделиться

Вы могли отследить в обратном порядке в дереве DOM, пока Вы не добираетесь до правильного узла:

node = document.getElementById("message");
while (node.nodeName != "FORM" && node.parentNode) {
    node = node.parentNode;
}
4
ответ дан 2 December 2019 в 03:22
поделиться

Или маленький jQuery (игнорирующий сам jQuery):

$("#message").parents("form:first")
3
ответ дан 2 December 2019 в 03:22
поделиться

Кроме node.parentNode, я не полагаю, что существует способ найти определенного предка данного узла. Большинство библиотек обычно делает то, что Вы описываете и выполняете итерации через parentNode.

Если бы Вы не пользуетесь библиотекой как прототип, jQuery или Расширение, это, вероятно, была бы хорошая идея. К настоящему времени они разрешили все несовместимости и причуды в DOM для создания большинства операций как это пустяком.

0
ответ дан 2 December 2019 в 03:22
поделиться

Относительно сообщения Гамбо: Несмотря на то, что прототип и jQuery полезны, некоторые люди не внедряют их в свои проекты.

Не мог бы кто-нибудь объяснить, почему решение Гамбо было понижено, кроме того факта, что он повторил то, что ОП изначально пытался избежать?

node = document.getElementById(this.id);
while (node.nodeName != "FORM" && node.parentNode) {
    node = node.parentNode;
}

Чтобы ответить на вопрос ОП: Обход DOM - самый быстрый способ добиться этого эффекта - воспринимаемая скорость достигается за счет 1) лучше написанного JS-кода или 2) времени выполнения (если вы сохраняете форму при загрузке страницы для этого элемента, вы все равно будете перемещаться, но вы у вас будет более быстрый вызов сохраненной переменной, когда вам нужно будет получить эту информацию).

Нет атрибутов, вложенных в элементы, не являющиеся элементами формы, которые могли бы связать его с формой (span.form не существует).

Если вы используете скрипт (php / perl) для создания своей страницы и собираетесь делать много обращений к форме, вы можете встроить идентификатор формы в HTML для этого элемента. Тем не менее, поиск должен произойти.

Надеюсь, это поможет,

vol7ron

6
ответ дан 2 December 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: