BillRob BillRob - 4 months ago 7
Javascript Question

How to get a DOM Element from a JQuery Selector

I'm having an impossibly hard time finding out to get the actual DOMElement from a jquery selector. Sample Code:

<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code } )


and in another piece of code I'm trying to determine the checked value of the checkbox.

if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
//do something.


And please, I do not want to do:

if ( checkbox.eq(0).is(":checked"))
//do something


That get's me around the checkbox, but other times I've needed the real DOMElement.

Answer

You can access the raw DOM element with:

$("table").get(0);

or more simply:

$("table")[0];

There isn't actually a lot you need this for however (in my experience). Take your checkbox example:

$(":checkbox").click(function() {
  if ($(this).is(":checked")) {
    // do stuff
  }
});

is more "jquery'ish" and (imho) more concise. What if you wanted to number them?

$(":checkbox").each(function(i, elem) {
  $(elem).data("index", i);
});
$(":checkbox").click(function() {
  if ($(this).is(":checked") && $(this).data("index") == 0) {
    // do stuff
  }
});

Some of these features also help mask differences in browsers too. Some attributes can be different. The classic example is AJAX calls. To do this properly in raw Javascript has about 7 fallback cases for XmlHttpRequest.

Comments