35

This code isn't for anything in particular. I'm just trying to successfully get the tagName or nodeName of an element. However, when I run the following code, I always get an alert saying "undefined". I'm wondering if it's because this function executes when the document is ready? Is there a different place I should be doing this? Or is it probably my other javascript code conflicting somehow (I would doubt).

 $(document).ready(function(){
        $('#first').hover(function() {
            alert($('#last').nodeName);
        });
    });
Jacob Relkin
  • 161,348
  • 33
  • 346
  • 320
Matthew
  • 15,282
  • 27
  • 88
  • 123

2 Answers2

65

Use the prop() of jQuery:

alert($('#last').prop("nodeName"));
Mark Ursino
  • 31,209
  • 11
  • 51
  • 83
steven
  • 651
  • 5
  • 2
57

You are trying to access a non-member of the jQuery object. Use one of these DOM element accessors to retrieve these properties:

$( '#last' ).get(0).nodeName

OR

$( '#last' )[0].nodeName

OR

document.getElementById( 'last' ).nodeName

Jacob Relkin
  • 161,348
  • 33
  • 346
  • 320
  • 4
    I don't think this works anymore and has been depreciated. Steven's answer worked fine: .prop("nodeName")) – newUserNameHere Oct 10 '13 at 22:55
  • 1
    Two comments for @newUserNameHere: (1) The answer does work and the functions used are not deprecated. (2) Note the difference between "deprecated" (correct) and "depreciated" (incorrect), as discussed in [this other Stack Exchange question](http://english.stackexchange.com/q/45295). – Andrew Willems Mar 09 '16 at 23:56