2013-02-13 44 views
1

我有一个简单的性能问题。jquery.val()vs底层元素值性能

哪个更好

var elem = jQuery("#idOfMyElem"), y; 
if (elem.length) { 
    y = elem.val(); 
    // y = elem[0].value; 
} 

哪一个性能更好? elem.val()或elem [0] .value;

+5

性能问题应始终通过运行测试来评估。使用jsPerf.com构建相关测试。另外,如果您想要获得最佳性能,请在第一行中避免使用jQuery。使用'document.getElementById()'来代替,因为这可能是一个事件更大的区别。 – jfriend00 2013-02-13 17:10:53

回答

3

Here是一个简单的测试。 据此,y = elem.val()y = elem[0].value要慢90%

4

这一个:

var elem = document.getElementById('idOfMyElem'), y; 

if (elem) { 
    y = elem.value; 
} 

$(elem).on('click', function() { ... }) 
+0

嗨,谢谢,但我需要jquery elem因为我打算用它来做其他的事情。就像添加事件监听器一样。 – 2013-02-13 17:12:50

+0

然后将其包装 - > $(elem)。 – adeneo 2013-02-13 17:14:33

+0

@ user578635 - performancewise,当通过ID获取元素时,您可能永远不会注意到其中的差异,并且始终坚持使用jQuery通常是让代码更易读并且以后更易于理解的好主意。使用本地值和val()也是同样的,差别在于minescule,所以你认为它更可读。 – adeneo 2013-02-13 17:17:25