如何从JQuery Selector中获取DOM元素

我有一个难以置信的困难时间find从jqueryselect器实际的DOMElement。 示例代码:

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

并在另一段代码,我试图确定checkbox的选中的值。

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

而请,我不想这样做:

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

这让我在checkbox周围,但有时候我需要真正的DOME元素。

您可以通过以下方式访问原始DOM元素:

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

或者更简单:

 $("table")[0]; 

但实际上并没有太多需要(以我的经验)。 以您的checkbox为例:

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

更“jquery'ish”和(imho)更简洁。 如果你想给他们编号呢?

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

其中的一些function也有助于屏蔽浏览器的差异。 一些属性可能不同。 经典的例子是AJAX调用。 在原始Javascript中正确地做到这一点有大约7回退XmlHttpRequest

编辑:似乎我错了,假设你不能得到的元素。 正如其他人已经发布在这里,你可以得到它:

 $('#element').get(0); 

我已经validation这实际上返回匹配的DOM元素。

我需要获取元素作为一个string。

 jQuery("#bob").get(0).outerHTML; 

这会给你类似的东西:

 <input type="text" id="bob" value="hello world" /> 

…作为一个string,而不是一个DOM元素。

如果您需要直接与DOM元素交互,那么为什么不直接使用document.getElementById因为如果您试图与特定元素进行交互,您可能会知道该id,因为假设类名仅在一个元素上或其他元素上期权往往是有风险的。

但是,我倾向于同意其他人的看法,在大多数情况下,您应该学习使用jQuery提供的内容来做你所需要的,因为它非常灵活。

更新:根据评论:这是一个很好的解释: http : //www.mail-archive.com/jquery-en@googlegroups.com/msg04461.html

 $(this).attr("checked") ? $(this).val() : 0 

如果选中,则返回值;如果不是,则返回0。

$(this).val()只是到达DOM并获得元素的属性“值”,无论是否被检查。