我对何时可以使用 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').nodeName
最佳答案
您需要 .get(0) 结果以获取 DOM 就绪对象。
var myBox = $("div#myBox");
alert(myBox.get(0).id); // "myBox"
阅读 Cody Lindley 的“Peeling Away the jQuery Wrapper and Finding an Array”
回复:编辑: .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
Bob, you really should create new questions, rather than asking more and more here.
将 dom 元素转换为 jquery 对象是通过将其传递给选择器来完成的:
var myBox = document.createElement("div");
var myBoxJQ = $(myBox);
将 This
赋给一个变量。取决于你什么时候做。如果“this”指的是一个 jQuery 对象,那么 this
就是一个 jQuery 对象。您可以通过使用 .get(0)
跟随 this
来转换它。
当 this
引用一个 jQuery 对象时,您不需要将它包装在 $() 中。这是多余的。
最后,$elemSel.children('td').nodeName
可以这样完成:$elemSel.children('td')[0].nodeName
或
$elemSel.children('td').get(0).nodeName
,其中 0 是要访问的项目的索引。
关于javascript - JQuery 方法和 DOM 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557533/