jQuery:获取选定的元素标记名称

con*_*tor 625 javascript jquery jquery-selectors

有没有简单的方法来获取标签名称?

例如,如果我被赋予$('a')一个函数,我想得到'a'.

til*_*ryj 1004

你可以打电话.prop("tagName").例子:

jQuery("<a>").prop("tagName"); //==> "A"
jQuery("<h1>").prop("tagName"); //==> "H1"
jQuery("<coolTagName999>").prop("tagName"); //==> "COOLTAGNAME999"
Run Code Online (Sandbox Code Playgroud)


如果写出.prop("tagName")是繁琐的,你可以创建一个自定义函数,如下所示:

jQuery.fn.tagName = function() {
  return this.prop("tagName");
};
Run Code Online (Sandbox Code Playgroud)

例子:

jQuery("<a>").tagName(); //==> "A"
jQuery("<h1>").tagName(); //==> "H1"
jQuery("<coolTagName999>").tagName(); //==> "COOLTAGNAME999"
Run Code Online (Sandbox Code Playgroud)


请注意,按照惯例,标签名称返回CAPITALIZED.如果希望返回的标记名全部为小写,则可以编辑自定义函数,如下所示:

jQuery.fn.tagNameLowerCase = function() {
  return this.prop("tagName").toLowerCase();
};
Run Code Online (Sandbox Code Playgroud)

例子:

jQuery("<a>").tagNameLowerCase(); //==> "a"
jQuery("<h1>").tagNameLowerCase(); //==> "h1"
jQuery("<coolTagName999>").tagNameLowerCase(); //==> "cooltagname999"
Run Code Online (Sandbox Code Playgroud)

  • 对于jQuery 1.6,它应该是`.prop`. (18认同)
  • tagName是DOM规范的一部分,并且始终大写. (8认同)
  • 所有浏览器都遵循大写惯例吗?如果没有,jQuery会规范化吗? (3认同)
  • 在将`prop('tagName')`结果与标记名称进行比较时,使用`toLowerCase()`或`toUpperCase()`可能会有所帮助.`if($("my_selector").prop("tagName").toLowerCase()=='div')`或`if($("my_selector").prop("tagName").toUpperCase()== 'DIV')` (3认同)

SLa*_*aks 96

您可以使用DOM的nodeName属性:

$(...)[0].nodeName
Run Code Online (Sandbox Code Playgroud)

  • ...特别是由于那些浏览器不兼容问题,如果有人选择解决方案并且不了解哪些浏览器不兼容性,jQuery通常会更好.;) (24认同)
  • 特别是如果你处于each()类似的情况,你必须将元素强制转换为jquery对象以获取已存在的属性,如`$(this).prop('tagname')`.this.nodeName通常更有效.+1 (7认同)
  • 纯JS解决方案(像这一个)通常优于jQuery,特别是如果它们没有浏览器兼容性问题或更冗长. (6认同)
  • 我认为这是优越的,因为jQuery版本无关紧要,此解决方案适用于所有版本.+1 (4认同)

小智 59

从jQuery 1.6开始,你现在应该调用prop:

$target.prop("tagName")
Run Code Online (Sandbox Code Playgroud)

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


Day*_*rdo 45

jQuery 1.6+

jQuery('selector').prop("tagName").toLowerCase()
Run Code Online (Sandbox Code Playgroud)

旧版本

jQuery('selector').attr("tagName").toLowerCase()
Run Code Online (Sandbox Code Playgroud)

toLowerCase()不是必需的.


Che*_*ech 22

这是另一种方式:

$('selector')[0].tagName
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 10

您应使用jQuery('selector').attr("tagName").toLowerCase(),因为它只能在旧版本的jQuery工作.

可以使用$('selector').prop("tagName").toLowerCase(),如果你确信你使用jQuery的版本,这就是> = 1.6的版本.


注意 :

您可能认为现在每个人都在使用jQuery 1.10+或其他东西(2016年1月),但遗憾的是并非如此.例如,今天很多人仍在使用Drupal 7,到目前为止,Drupal 7的每个正式版本都默认包含jQuery 1.4.4.

因此,如果您不确定您的项目是否将使用jQuery 1.6+,请考虑使用适用于所有jQuery版本的选项之一:

选项1 :

jQuery('selector')[0].tagName.toLowerCase()
Run Code Online (Sandbox Code Playgroud)

选项2

jQuery('selector')[0].nodeName.toLowerCase()
Run Code Online (Sandbox Code Playgroud)