在 jQuery 对象和纯 js 对象之间进行转换
Converting between a jQuery object and a pure js object?
$('#elementID')
返回的对象和document.getElementById('elementID')
返回的对象有什么区别?
此外,您如何轻松地从一个转换为另一个?例如:
$('a').each(function(){
// How can I access 'this' as a pure javascript object instead of as a jQuery object?
});
这已经困扰了我一段时间了。我知道你不应该把两者混为一谈,真的,但我只是想了解这个原理。
$('#elementID')
返回的对象和document.getElementById('elementID')
返回的对象有什么区别?
$('#elementID')
返回一个对象,其中包含大量函数,这些函数都对document.getElementById('elementID')
的结果进行操作。把jQuery对象想象成document.getElementById('elementID')
坐在里面的一个巨大的机器人。
您可以使用以下命令访问包装的 DOM 对象:
-
$('#elementID').get()
-
$('#elementID').get(0)
-
$('#elementID')[0]
例如,如果有多个元素与选择器匹配,则可以访问带有 $elements.get(1)
或 $elements[1]
的第二个元素。
此外,您如何轻松地从一个转换为另一个?
要使用jQuery的便利函数包装对象,只需将其传递到$
函数中:
$(document.getElementById('foo'))
$(document.querySelectorAll('.foo:not(.bar)'))
要采用另一种方式,请使用.get()
或括号表示法。
在您的特定示例中,您不需要执行任何特殊操作,因为this
实际上是一个普通的 DOM 对象。这就是为什么您经常看到回调充斥着$(this)
。
jquery 对象只是一个具有特殊函数的数组
// non-jquery -> jquery
var a = document.getElementById('some-link'); // one element
var $a = $(a);
// jquery -> non-jquery
a = $a[0]; // a jquery element holds all of its matches in the indices 0..(a.length) just like a JS array
Jquery 对象既包含描述对象的属性,也包含与该对象交互的方法(函数)
我使用以下代码来创建一个简单的 javascript 元素数组,但在某些情况下,我发现我需要使用与 jQuery 对象相同的元素。 然后我找到了以下解决方案来做到这一点。
var cboxes = document.getElementsByName('deletecheck');
var len = cboxes.length;
for (var i=0; i<len; i++) {
if (cboxes[i].checked){
jQuery(cboxes[i]).parent().parent().remove();
}
}
- JavaScript中的函数和对象之间没有区别吗?
- 在控制器和数据对象之间同步数据
- 不同对象之间的递归,并将它们唯一地组合在一起,不重复
- 两个对象之间的Javascript原型
- 在window.onload之前/之后创建对象之间的区别
- 如何管理原始对象之间的数据依赖关系
- javascript中构造函数和对象之间的等价性
- 为什么 JSON 中的对象之间有逗号
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 如何匹配两个对象之间的值并使用特定值创建新对象
- D3 - 在两个不与其他对象相交的对象之间绘制一条线
- 两个时间对象之间的差异
- 函数和对象之间的差异,以及它如何影响性能
- jQuery函数,用于计算两个JavaScript对象之间的差异
- jQuery 自定义事件在全局范围内工作,但在对象之间不起作用
- 以天为单位的 2 个 ember 日期时间对象之间的差异
- 使用原型和对象文字表示法创建对象之间的区别
- HTML/JS Canvas 在对象之间画线
- 在 jQuery 对象和纯 js 对象之间进行转换
- 循环遍历 JSON,在对象之间插入键/值