jQuery 可以提供标签名称吗?

2022-08-30 05:15:10

我在HTML页面上有几个元素具有相同的类 - 但它们是不同的元素类型。我想在循环访问元素时找出元素的标记名称 - 但是.attr不采用“tag”或“tagname”。

这就是我的意思。在页面上考虑以下元素:

<h1 class="rnd">First</h1>
<h2 id="foo" class="rnd">Second</h2>
<h3 class="rnd">Third</h3>
<h4 id="bar" class="rnd">Fourth</h4>

现在我想运行类似这样的东西,以确保我的元素都有一个ID(如果尚未定义):

$(function() {
  $(".rnd").each(function(i) {
    var id = $(this).attr("id");
    if (id === undefined || id.length === 0) {
      // this is the line that's giving me problems.
      // .attr("tag") returns undefined
      $(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());
    }
  });
});

我想要的结果是,H2和H4元素将具有ID

rndh2_1
rndh4_3

分别。

关于如何发现“this”所代表的元素的标签名称的任何想法?


答案 1

你可以试试这个:

if($(this).is('h1')){
  doStuff();
}

有关 is() 的更多信息,请参阅文档


答案 2
$(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());

应该是

$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());