Может ли jQuery предоставить имя тега? - PullRequest
115 голосов
/ 07 октября 2009

У меня есть несколько элементов на странице HTML, которые имеют один и тот же класс - но это разные типы элементов. Я хочу узнать имя тега элемента, когда я зацикливаюсь на них, но .attr не принимает теги или теги.

Вот что я имею в виду. Рассмотрим эти элементы на странице:

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

Теперь я хочу запустить что-то вроде этого, чтобы убедиться, что все мои элементы имеют идентификатор, если он еще не определен:

$(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 имели идентификатор

.
rndh2_1
rndh4_3

соответственно.

Любые идеи о том, как я могу найти имя тега элемента, представленного "this"?

Ответы [ 13 ]

0 голосов
/ 02 февраля 2013

Вы можете получить имя тега HTML-элемента на всей странице.

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

        $('body').contents().on("click",function () {
          var string = this.tagName;
          alert(string);
         });
0 голосов
/ 23 февраля 2012

Рассмотрим быстрый ФИЛЬТР метод:

$('.rnd').filter('h2,h4')

возвращается:

[<h2 id=​"foo" class=​"rnd">​Second​</h2>​, <h4 id=​"bar" class=​"rnd">​Fourth​</h4>​]

так:

$('.rnd').filter('h2,h4').each(function() { /*...$(this)...*/ });
0 голосов
/ 20 октября 2011

Так как это вопрос, вы пришли в Google, используя тэг jquery first child в качестве запроса, я опубликую другой пример:

<div><p>Some text, whatever</p></div>

$('div').children(':first-child').get(0).tagName); // ...and not $('div:first-child')[...]

Результатом jquery является (верхний регистр) тэг: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...