最近,我一直在努力加速性能这样一个jQuery的问题(有时是与可维护性帮助)关于变量和选择
var objectToReference = $('div .complicated #selector ul:last');
那么,是什么objectToReference
真正持有?有时候事情已经让我感到困扰,所以我已经回到使用完整的选择器,它已经工作。
如此做变量保持一个参考,指针等(我不知道这些术语的确切定义)
感谢
最近,我一直在努力加速性能这样一个jQuery的问题(有时是与可维护性帮助)关于变量和选择
var objectToReference = $('div .complicated #selector ul:last');
那么,是什么objectToReference
真正持有?有时候事情已经让我感到困扰,所以我已经回到使用完整的选择器,它已经工作。
如此做变量保持一个参考,指针等(我不知道这些术语的确切定义)
感谢
许多人在创建像这样的变量时使用的最佳做法是将其命名为$,以表明它是一个jquery对象。所以你可以命名变量$ o,并且可以直接调用其他jQuery链函数,而不必在变量周围放置$()。
$o.hide();
这是开始与你操纵的区域周围的元素,以避免搜索整个文档是个好主意。例如,要获取文档的单节内的所有链接(无需搜索整个文档):
var $o = $('#mysection');
var $links = $('a', $o); // equiv to $o.find('a')
最后,它绝不会伤害传递一个jQuery对象背透的jQuery:
$o === $($o)
这有很好的副作用 - 你可以编写接受任何以下作为参数的功能:一个选择,一个元素,一个jQuery对象:
function myFunc(e) {
var $e = $(e);
}
// All of the following will work:
myFunc('#mysection');
myFunc(document.getElementById('mysection'));
myFunc($('#mysection a'));
它拥有jQuery的集合,它是一个数组。如果DOM改变了你,你可能会遇到麻烦。
仔细看了一下,发现集合(您可以像数组一样对待)是一个具有类似数组属性的对象。
http://www.learningjquery.com/2008/12/peeling-away-the-jquery-wrapper-and-finding-an-array
请记住,数组和对象是在JavaScript中非常相像。欲了解更多信息,请参阅我的Kirk & Cheesecake post。
返回值jQuery selector是jQuery元素的数组。如果选择器没有找到任何匹配,则它包含一个包含0个元素的数组。
数组中的每个元素基本上都是对HTML文档中匹配的DOM元素的引用。这是允许您根据需要遍历和操作它们的。
从技术上讲,不是一个数组,而是一个给定几个类似数组的属性的对象。 – Nosredna 2009-06-02 14:51:03
它包含对返回的jQuery对象的引用。对该对象的任何更改都会将底层DOM元素和所有其他引用更改为相同的元素。
$('div .complicated #selector ul:last')
你的变量objectToReference
将是您可以执行的jQuery操作jQuery对象。另外,即使你不需要,也可以使用objectToReference
创建一个新的jQuery对象,它不应该强加任何性能限制,因为它应该只返回一个对自身的引用,而不是对该元素进行重新搜索。
var objectToReference = $('div .complicated #selector ul:last');
var copyOfObject = $(objectToReference);
您可以尝试引用objectToReference
的DOM属性遇到了问题。如果你想获得在由jQuery选择返回你的objectToReference
的基本DOM元素,你可以这样做:
var objectToReference = $('div .complicated #selector ul:last');
var domOfObject = objectToReference.get(0);
或可选,你能做到这一点,它做同样在1号线:
var domObjectToReference= $('div .complicated #selector ul:last').get(0);
同样,你可以使用domObjectToReference
在jQuery的构造函数来创建另一个引用该对象:
var objectToReference2 = $(domObjectToReference);
所有这些例子商店裁判的参与DOM元素。如果您修改其中一个参考的值,它们将全部被修改/更新。
的人谁的INTERES特德我已经发布了V2的jQuery参考,如果你想看看它在这里:http://www.skidoosh.co.uk/jquery/jquery-selectors-and-attribute-selectors-reference-and-examples-v2/为jQuery 1.2我会在几天内更新它的1.3。
OH NOES!现在我的JS看起来像一个Perl或PHP。 好提示tho:P – 2009-06-02 03:55:20