jQuery: получить имя тега выбранного элемента

522

Есть ли простой способ получить имя тега?

Например, если мне присваивается $('a') в функцию, я хочу получить 'a'.

Теги:
jquery-selectors

6 ответов

891
Лучший ответ

Вы можете позвонить .prop("tagName"). Примеры:

jQuery("<a>").prop("tagName"); //==> "A"
jQuery("<h1>").prop("tagName"); //==> "H1"
jQuery("<coolTagName999>").prop("tagName"); //==> "COOLTAGNAME999"


Если запись .prop("tagName") утомительна, вы можете создать пользовательскую функцию следующим образом:

jQuery.fn.tagName = function() {
  return this.prop("tagName");
};

Примеры:

jQuery("<a>").tagName(); //==> "A"
jQuery("<h1>").tagName(); //==> "H1"
jQuery("<coolTagName999>").tagName(); //==> "COOLTAGNAME999"


Обратите внимание, что имена тегов, по соглашению, возвращаются CAPITALIZED. Если вы хотите, чтобы возвращаемое имя тега было строчным, вы можете отредактировать пользовательскую функцию следующим образом:

jQuery.fn.tagNameLowerCase = function() {
  return this.prop("tagName").toLowerCase();
};

Примеры:

jQuery("<a>").tagNameLowerCase(); //==> "a"
jQuery("<h1>").tagNameLowerCase(); //==> "h1"
jQuery("<coolTagName999>").tagNameLowerCase(); //==> "cooltagname999"
  • 18
    Начиная с jQuery 1.6, это должно быть .prop .
  • 2
    Соглашается ли с заглавной буквы все браузеры? Если нет, нормализует ли это jQuery?
Показать ещё 7 комментариев
76

Вы можете использовать свойство DOM nodeName:

$(...)[0].nodeName
  • 0
    Благодарю. Прекрасно работает - хотя я буду использовать более jQueryish версию, потому что в данный момент я нахожусь в мире jQuery.
  • 6
    Чистые решения JS (такие как это), как правило, превосходят решения jQuery, особенно если они не страдают от проблем совместимости браузера или являются более многословными.
Показать ещё 3 комментария
52

Как и в jQuery 1.6, вы должны теперь вызвать prop:

$target.prop("tagName")

См. http://api.jquery.com/prop/

39

jQuery 1.6 +

jQuery('selector').prop("tagName").toLowerCase()

Старые версии

jQuery('selector').attr("tagName").toLowerCase()

toLowerCase() не является обязательным.

  • 0
    Почему ты делаешь new String ?
  • 0
    Потому что toLowerCase () является методом String
Показать ещё 1 комментарий
19

Это еще один способ:

$('selector')[0].tagName
  • 0
    Хороший! Четче, чем nodeName и даже короче. :П
8

Вы должны НЕ использовать jQuery('selector').attr("tagName").toLowerCase(), потому что он работает только в более ранних версиях JQuery.

Вы могли использовать $('selector').prop("tagName").toLowerCase(), если вы уверены, что используете версию jQuery thats >= version 1.6.


Примечание:

Вы можете подумать, что EVERYONE использует jQuery 1.10+ или что-то уже (январь 2016 года), но, к сожалению, это не так. Например, многие люди сегодня используют Drupal 7, и каждая официальная версия Drupal 7 по сегодняшний день включает jQuery 1.4.4 по умолчанию.

Итак, если вы не знаете наверняка, будет ли ваш проект использовать jQuery 1.6+, рассмотрите возможность использования одного из параметров, которые работают для ВСЕХ версий jQuery:

Вариант 1:

jQuery('selector')[0].tagName.toLowerCase()

Вариант 2

jQuery('selector')[0].nodeName.toLowerCase()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню