javascript - JQuery 方法和 DOM 属性

标签 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').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/

相关文章:

javascript - 使用 JavaScript 启用/禁用文本框和按钮

javascript - 当我将鼠标快速移出绘图时,jQuery flot 工具提示不会隐藏

jquery - 在 jquery 选择器上调用函数

xml - MSXML VBA : Validating XML against XSD: "The ' ' namespace provided differs from the schema's targetNamespace.“

javascript - 为什么我不能删除 document.body 属性?

javascript - 当元素在文本周围插入然后被删除时,HTML 中的文本会在 DOM 中 split /格式错误(但保留内部文本)

javascript - 如何在javascript中的类内部创建函数?

javascript - Angular 2 没有在后续请求中传递 JSESSIONID

javascript - 如何查找祖先元素并查询其元数据

jquery - 简单的 jquery 代码。我不知道我做错了什么