JQuery方法和DOM属性

时间:2009-02-17 16:04:04

标签: javascript jquery dom

我很困惑何时可以使用DOM属性以及何时可以在Jquery对象上使用Jquery方法。说,我使用选择器

var $elemSel = $('#myDiv').find('[id *= \'select\']')

此时,$ elemSel是一个jquery对象,我理解它是DOM元素数组的包装器。我可以通过迭代$ elemSel对象/数组来获得对DOM元素的引用(正确吗?)

我的问题: 1.有没有办法将这个$ elemSel转换为非JQuery常规DOM元素数组? 2.我可以同时组合DOM属性和JQuery方法(类似这样)

$elemSel.children('td').nodeName

(nodeName与DOM相关,children与JQuery相关)

编辑:这有什么问题?

$elemSel.get(0).is(':checked')

编辑2:

感谢您的回复。我现在明白我可以使用get(0)来获取DOM元素。其他问题:

  1. 如何将DOM元素转换为JQuery对象?

  2. 如果我将“this”赋给变量,是新的var DOM还是JQuery?如果是JQuery,我该如何将其转换为DOM元素? (因为我不能使用get(0))

    var $ elemTd = $(this);

  3. 当我执行上述任务时,我看到一些代码示例不包含变量名称的$符号。为什么呢?

  4. 至于我原来的问题,我可以在JQuery对象上同时组合DOM属性和JQuery函数吗?

    $ elemSel.children( 'TD')。节点名称

4 个答案:

答案 0 :(得分:24)

你需要.get(0)得到DOM-ready对象的结果。

var myBox = $("div#myBox");
alert(myBox.get(0).id); // "myBox"

阅读Cody Lindley的“Peeling Away the jQuery Wrapper and Finding an Array


Re:编辑: .is()不是原生的javascript方法。运行.get(0)时,您不再使用jQuery对象,因此您不能指望从它运行jQuery方法。

如果您想对特定结果投放.is(),请使用:eq(index) selector.eq(index) method

$("div:eq(1)").is(":checked"); // gets second div
$("div").eq(1).is(":checked"); // gets second div

重新:编辑#2

  鲍勃,你真的应该创造新的   问题,而不是要求更多和   更多这里。

将dom元素转换为jquery对象是通过在选择器中传递它来完成的:

var myBox = document.createElement("div");
var myBoxJQ = $(myBox);

向变量提供This。取决于你什么时候做。如果通过“this”指的是jQuery对象,那么this将是一个jQuery对象。您可以按this.get(0)进行转换。

this引用jQuery对象时,您不需要将其包装在$()中。这是多余的。

最后,$elemSel.children('td').nodeName可以像这样完成:$elemSel.children('td')[0].nodeName$elemSel.children('td').get(0).nodeName,其中0是要访问的项目的索引。

答案 1 :(得分:2)

get(index)函数还有一个快捷方式:

$(selector)[0].nodeName

Soruce:http://docs.jquery.com/Core/get#index

答案 2 :(得分:1)

因为jQuery选择器中可以有多个匹配项,所以需要从“数组”中获取元素。

您可以使用get方法返回单个DOM元素或数组或DOM元素。

例如:

var elims = $("div").get();
for(var i in elims)
    alert(elims[i].nodeName);

修改

$elemSel.get(0).is(':checked')将无效,因为您正在获取Dom对象,然后尝试在其上使用jQuery函数。如果您想获得单个jQuery元素,请使用eq

$elemSel.eq(0).is(':checked');

答案 3 :(得分:0)

为了调用本机DOM方法,您可以使用get(index)。或者如果你想使用jQuery Object方法,你应该用jQuery包装一个原生DOM元素,它将把DOM元素转换成一个jQuery对象,所以所有方法都可用。 http://www.linxinshan.com/?p=339