Получение собственных элементов 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.