如何从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并获得元素的属性“值”,无论是否被检查。