Reputation: 3696
I'm try to get an elements tag name in jQuery.
I have the following html:
<div class="section" id="New_Revision">
<h1>New Revision <img alt="Lock_closed" class="edit" data-id="1" src="/assets/lock_closed.svg" /></h1>
<p>This is a test paragraph.</p>
<ol class="references">
<li>test</li>
</ol>
</div>
And javascript:
$(".edit").click(function(){
$(this).closest("div.section").children().each(function(){
alert($(this).tagName + " - " + $(this).html());
});
})
I've tried $(this).tagName
, $(this).nodeName
and $(this).attr("tag")
as noted in this question: Can jQuery provide the tag name?
But I'm always getting undefined
in return. The html()
outputs correctly. Why can't I get the tag name of each element?
Upvotes: 16
Views: 64909
Reputation: 4353
Have you tried:
$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());
As stated in the linked question. Also there is a big difference between $(this) and this
Tried this in the browser console and it works:
document.getElementsByTagName("a")[0].tagName // this uses javascript
this uses jquery:
$('a').get(0).nodeName; // this works for jquery
try this:
$(".edit").click(function(){
$(this).closest("div.section").children().each(function(){
alert(this.tagName + " - " + $(this).html());
});
})
Upvotes: 5
Reputation: 9804
Try
this.nodeName
instead of $(this).nodeName
this
refers to the DOM element itself and $(this)
wraps the element up in a jQuery object.
EDIT
If you require Jquery approach you can use
$(this).prop("tagName")
Upvotes: 43