我很困惑何时可以使用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元素。其他问题:
如何将DOM元素转换为JQuery对象?
如果我将“this”赋给变量,是新的var DOM还是JQuery?如果是JQuery,我该如何将其转换为DOM元素? (因为我不能使用get(0))
var $ elemTd = $(this);
当我执行上述任务时,我看到一些代码示例不包含变量名称的$符号。为什么呢?
至于我原来的问题,我可以在JQuery对象上同时组合DOM属性和JQuery函数吗?
$ elemSel.children( 'TD')。节点名称
答案 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)
答案 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