Ссылка на объект верхнего уровня в html с помощью jquery

#jquery #reference

#jquery #ссылка

Вопрос:

Я пытаюсь выяснить, как использовать jquery для ссылки на объект верхнего уровня в html (body) из любого дочернего элемента внутри html.

Ответ №1:

Я не понимаю, почему $(«body») не будет работать.

см. http://api.jquery.com/element-selector /

Это можно использовать из любого места, и то, в каком дочернем элементе вы находитесь, не имеет значения.


Дополнительные примечания, основанные на комментариях:

Это действительно зависит от каждого случая. Если потребность относительна (на странице более одной таблицы), то использование parent() и closest() часто будет лучшим способом. На более простых страницах вы можете искать элементы непосредственно по идентификатору.

Два примера:

Страница с двумя списками, где вы хотите перемещать элементы между одним списком и другим. Поскольку эта функциональность определяется как страница, имеющая только два списка, имеет смысл использовать прямой метод.

Страница с динамическим списком пользователей и динамическим добавлением элементов в пользовательский контент (например, динамический чат). В этом случае вы хотите использовать relative, поскольку в области каждого пользователя будут одинаковые элементы, и вы хотите изменить эту область относительно области пользователя.

Комментарии:

1. Да, я пытаюсь обрабатывать события, запускаемые кнопками в каждой строке таблицы. Если я хочу, чтобы jquery ссылался на элемент вне таблицы / строки, кажется, гораздо проще искать элемент с верхнего уровня, чем пытаться выйти из таблицы, а затем искать этот конкретный элемент.

Ответ №2:

Вы также можете попробовать

 element.closest('body');
  

Хотя это, конечно, непрактично, вам следует один раз обратиться к body и кэшировать результат в переменной, например:

 body = $('body');
  

а затем просто обратитесь к body .

Комментарии:

1. Зачем это делать? HTML может иметь только один <BODY> , это будет работать намного медленнее, чем $("BODY") .

2. просто хотел показать, что есть closest , обновил ответ, сказав, что это непрактично.

Ответ №3:

Вы всегда можете использовать $.prev() и $.next()

Это $.parent() вернет родительский контейнер

http://api.jquery.com/parent/

Или с помощью селектора:

$('body')

Комментарии:

1. Никогда не было бы веской причины для использования #bodyID , поскольку HTML может иметь только 1 элемент тела, и он будет работать медленнее.

2. Вы правы.. но я помню ошибку в ie6, которая требовала добавления идентификатора в тело .. в любом случае, я исправил свой ответ.