我正在学习javaScript,但仍有许多疑点。我已经尝试过搜索这个,但也许我使用了错误的单词。我总是推迟这个,但由于我正在研究的项目规模正在变得比我预期的要大,我需要澄清。
我知道在搜索范围和访问Dom 方面的速度成本。但我不知道哪一个比另一个慢。
是否更快......
a)向上移动范围链以使用jQuery对象获取变量,但仅转到Dom一次
或
b)不再向范围链上移,但再次访问Dom
var $el = $("#el");
//$el is used on this scope (and so, the question makes some sense:))
$el (...)
// some or lot's of code
function a() {
// some or lot's of code
function b(){
// some or lot's of code
function c() {
a) $el (...)
b) var $el = $("#el");
$el (...)
}
}
}
答案 0 :(得分:1)
答案 1 :(得分:1)
虽然你的问题很不清楚,但也许我可以用一般的经验来回答:
DOM很慢。如果您可以避免遍历它,请执行此操作。如果您搜索DOM以查找特定节点,请将该引用存储在变量中,以避免再次搜索DOM。
答案 2 :(得分:1)
如果我理解你的问题,那么你就是在询问jQuery中的性能访问元素。这里有一些提示:
每次必须获取对jQuery对象的引用(示例中为$(“#el”))都会产生运营成本。在性能方面,您应该始终尝试根据需要声明最小化必要元素。
访问兄弟姐妹(兄弟姐妹()),父母(最近(),父())或子女(儿童(),find())是一个不错的选择,如果只是为了几个操作,但如果你将多次使用这些元素,它更好地用直接选择器引用它们,如$(“#el-child”)或(“#el .child”)。
如果声明类似$ el = $(“#el”)的var,则会获得当前状态的节点的引用。有时这个节点已被更新,删除,重新创建或其他东西,而且这个引用不会留下它们,所以你必须再次调用这个$ el = $(“#el”),正如我之前所说的,这取决于您的网站逻辑如何运作。
注意:对不起我的英语,我知道它并不he <