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元素。 其他问题:
-
我如何将DOM元素转换为JQuery对象?
-
如果我将“this”赋给变量,是新的var DOM还是JQuery? 如果是JQuery,我该如何将其转换为DOM元素? (因为我不能使用get(0))
var $ elemTd = $(this);
-
当我执行上述任务时,我看到一些代码示例不包含变量名称的$符号。 为什么?
-
至于我原来的问题,我可以在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