Есть ли простой способ получить имя тега?
Например, если мне дают $('a')
функцию, я хочу получить 'a'
.
Есть ли простой способ получить имя тега?
Например, если мне дают $('a')
функцию, я хочу получить 'a'
.
Ответы:
Вы можете позвонить .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"
.prop
.
toLowerCase()
или toUpperCase()
может быть полезно при сравнении prop('tagName')
результата с именем тега. if($("my_selector").prop("tagName").toLowerCase() == 'div')
илиif($("my_selector").prop("tagName").toUpperCase() == 'DIV')
Вы можете использовать nodeName
свойство DOM :
$(...)[0].nodeName
$(this).prop('tagname')
. this.nodeName часто более эффективен. +1
Начиная с jQuery 1.6, теперь вы должны вызывать prop:
$target.prop("tagName")
Смотрите http://api.jquery.com/prop/
JQuery 1.6+
jQuery('selector').prop("tagName").toLowerCase()
Старые версии
jQuery('selector').attr("tagName").toLowerCase()
toLowerCase () не является обязательным.
new String
?
Вы должны НЕ использовать jQuery('selector').attr("tagName").toLowerCase()
, потому что он работает только в старых версиях Jquery.
Вы можете использовать, $('selector').prop("tagName").toLowerCase()
если уверены, что используете версию jQuery, которая> = версия 1.6.
Вы можете подумать, что КАЖДЫЙ сейчас использует 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()