2012-05-16 2 views
3

код:

<img src="image1.jpg" alt="This is 1 test."> 

<img src="image2.jpg" alt="This is 2 test"> 

код JQuery:

alert($('img')[0].attr('alt')); 

почему не выскочит окно, и показывает This is 1 test.

ответ

7

ответьте на вопрос:

Это не работает, потому что [0] возвращает собственный DOM-элемент селектора, который не имеет метода .attr(). Вам нужно использовать .eq(index), который в основном извлекает из элементов index элемент, представленный $(). Обратите внимание, что $() возвращает массив -подобный объект, а не массив за себе (таким образом [0] не работает из коробки)

+1

Нет такой вещи, как 'DOMElement'. (Возможно, вы имели в виду: DOM element?) – Ryan

+0

все время я думал, что у него есть один: s, спасибо @minitech за новые знания :) –

+0

есть способ узнать, что $() возвращает объект, похожий на массив, а не массив. Спасибо. – run

7

Вы, вероятно, хотите использовать eq для этого:

alert($('img').eq(0).attr('alt')); 
2

$("img")[0] возвращает исходный DOM-элемент. Вы хотите, чтобы объект jQuery обертывал элемент DOM.

$("img").eq(0) Чтобы получить объект jQuery.

1

$('img')[0] возвращает объект HTMLElement, а не объект jquery, поэтому у него нет метода .attr. Если вы хотите использовать его, вы должны сделать $('img')[0].getAttribute('alt').

Или вы все еще хотите объект jquery, Вы можете использовать $('img').first().attr('alt').

+0

спасибо. как узнать, какой элемент возвращает объект HTMLElement или объект jquery, – run

+0

Чтобы проверить его, вы можете использовать консоль отладки. – xdazz

+0

Как использовать консоль отладки, не могли бы вы дать более подробную информацию о it.many thanks – run

Смежные вопросы