私信  •  关注

jasongetsdown

jasongetsdown 最近创建的主题
jasongetsdown 最近回复了
13 年前
回复了 jasongetsdown 创建的主题 » jquery数组和jquery对象在技术上有什么区别?

jquery对象是围绕一个DOM元素数组的包装器。所以“jquery数组” jQuery对象。对象包含页面上与选择器匹配的每个元素。对jquery对象调用的大多数方法都隐式地循环遍历数组中的所有元素,并应用于所有元素。

或者如果只是有很多的宽容 内置于每个函数中 允许单个元素或 元素集合。

这是一种情况。实际上,每个方法都在一个元素上工作,但jquery调用它的次数与它要处理的对象的次数一样多。我相信它确实有用 .each() 在内部这样做,所以如果你理解 () 然后您了解jquery的隐式循环是如何工作的。

有些方法不适用于集合中的每个对象,但在它们的文档中没有这样说。例外是应用于每个元素都不合理的方法。例如,如果你打电话 $('.blah').innerHeight() 您将获得jquery对象中第一个元素的高度 $('.blah.') .

还有一些方法可以获取和设置属性。获取时,它们从第一个元素返回值,设置时,它们应用于所有匹配的元素。例如,如果你打电话 $('.blah').css('font-size') 您可以从 第一 集合中的元素,但如果调用 $('.blah').css('width', 100) 您将设置宽度样式 每一个 jquery集合中的元素。

注意,实际上可以将jquery对象视为数组。只需使用数组表示法来访问元素。

$jQ_obj = $('.classy').find('.refined');
element = $jQ_obj[3];

这将存储具有类的页面上的第四个元素 refined 是元素的子元素, classy . 结果对象 element 是原始DOM对象。

第二点,

由于上述答案已被删除,请确保您了解 () 作品。您需要将要应用于每个匹配元素的函数传递给它,就像事件处理程序一样。所以应该是:

jQuery('.someclass').each(function(i) { //don't forget the dot!
    $(this).click(function() {
        alert("I've been clicked!");
    });
});

在回调中 () 这个 this 关键字是指当前正在循环通过的dom元素,传递给回调的参数是循环索引。 是一个原始的dom元素(把它想成写 $('.someclass')[i] )所以您必须从它创建一个jquery对象来执行调用 .click() 关于它。