jQuery $('img[alt]') срещу $('img').attr('alt')?

Две части на моя въпрос. Просто нещо, за което продължавам да се чудя.

1) Каква е разликата между използването на:

$('img[alt]').get(-1); // ignore the .get

vs

$('img').attr('alt').get(-1); // ignore the .get

Първата опция валиден начин ли е за достъп до атрибута alt на изображение? Или само второто е валидно?

и 2) Валидно ли е дори да има число (отрицателно или не) като аргумент в заявка .get? Сигурен съм, че не е, но искам да съм сигурен... Благодаря!


person Jose    schedule 24.11.2015    source източник
comment
Второто не е валидно с .get(). .attr() връща низ, но .get() е метод на jQuery обекти.   -  person Barmar    schedule 24.11.2015


Отговори (1)


Те са различни. Първата опция не получава атрибута alt, докато втората го прави.

  • $('img[alt]') - Селекторът img[alt] ще избере img елемент с атрибут alt. Струва си да се спомене, че [alt] е селектор на атрибути.

    С други думи, въз основа на селектора img[alt]:

    <!-- This img element would be selected because it *has* an 'alt' attribute. -->
    <img src="../" alt="Alt attribute" />
    
    <!-- This img element would NOT be selected. -->
    <img src="../" />
    
  • $('img').attr('alt') - Методът .attr() ще получи или зададе атрибута на избрания елемент(и). Така че в този случай $('img').attr('alt') ще извлече атрибута alt на елемента img.


Методът .get() ще извлече DOM елемента(ите), съответстващ(и) на jQuery селекторите. Единствените параметри, които този метод приема, е индексът на елемента, който искате да получите. Този параметър не е задължителен и индекс -1 няма да върне елемент.


Като странична бележка, не можете да цепвате метода .get() след метода .attr().

person Josh Crozier    schedule 24.11.2015