Получение собственных элементов DOM из объектов jQuery?

Как я могу заставить jQuery возвращать собственные DOM-элементы, которые он инкапсулирует?

Ответы

Ответ 1

Когда вы находите элементы с jQuery, вы можете получить их с помощью функции "get":

var regularElement = $('#myElementId').get(0);

Внутри функции ".each()" указатель "this" ссылается на "реальный" элемент:

$('input.special').each(function() {
  var type = this.type;
  this.value = "exploding balloon";
  // etc
})

Использование jQuery не делает Javascript "другим". Это Javascript, а DOM по-прежнему является DOM.

Ответ 2

$('myTag').get(0) возвращает элемент HTML.

Ответ 3

jQuery использует Sizzle Selector Engine *. Вы также можете использовать его самостоятельно.

* Подтвержден Дугом Нийнером, что означает, что он прав;)

Ответ 4

Я предполагаю, что вы пытаетесь проверить, является ли ваш объект jQuery первым экземпляром "cheese_tag". Вы можете найти первый тег с помощью селектора :first, и вам не нужно будет делать сравнение. Например, получить первый тег div будет: $('div:first').

Полный список селекторов jQuery приведен в документации.

Ответ 5

Другие люди уже сразу ответили на вопрос. Используйте метод get().

Однако большую часть времени вы хотите использовать методы jQuery для манипуляции, а не для доступа к необработанному элементу DOM, а затем для его изменения с помощью стандартного JavaScript.

Например, с jQuery вы можете просто сказать $('mySelector'). addClass ('myClass'), чтобы добавить класс CSS к элементу DOM. Это намного сложнее (и конкретный браузер), используя прямую манипуляцию DOM. Это понятие распространяется на почти любые другие манипуляции с DOM, которые вы хотели бы сделать.

Ответ 6

Объект jQuery представляет собой массивную оболочку вокруг одного или нескольких элементов DOM. Чтобы получить ссылку на фактические элементы DOM (вместо объекта jQuery), у вас есть два варианта. Первый (и самый быстрый) метод заключается в использовании обозначения массива:

$( "#foo" )[ 0 ]; // Equivalent to document.getElementById( "foo" )

Второй способ - использовать функцию .get():

$( "#foo" ).get( 0 ); // Identical to above, only slower.

Вы также можете вызвать .get() без каких-либо аргументов для получения истинного массива элементов DOM.