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’)。节点名称

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

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

阅读Cody Lindley撰写的“ 剥离jQuery Wrapper并找到一个数组 ”


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对象。 您可以使用.get(0)

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

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

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

 $(selector)[0].nodeName 

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

因为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'); 

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