我正在使用jquery开发一个应用程序,我在许多地方使用$(this)进行各种操作,如hasClass,addClass,attr等。
我应该保持原样还是声明像
这样的变量var mythis=$(this);
并使用 mythis 进行进一步的通话。
在哪种情况下,应用程序性能会提高?
任何帮助都将受到高度赞赏。
由于
答案 0 :(得分:2)
关于这个fiddle,这并不重要。因此,正如@Fawzan所说,请保持$(this)
以提高可读性。
var iterationMax = 100000;
var t1Start = Date.now();
for(var i=0; i<iterationMax; i++) {
var hasClass = $('#jquery-test').hasClass("no-class");
}
var t1End = Date.now();
var t2Start = Date.now();
var jqueryRef = $('#jquery-test');
for(var i=0; i<iterationMax; i++) {
var hasClass = jqueryRef.hasClass("no-class");
}
var t2End = Date.now();
$("#t1").html("T1 took: " + (t1End - t1Start) + " ms");
$("#t2").html("T2 took: " + (t2End - t2Start) + " ms");
<div id="jquery-test"></div>
<div id="t1"></div>
<div id="t2"></div>
答案 1 :(得分:0)
使用var mythis=$(this)
会略微提高您的效果。
因为$(this)
将初始化绑定到当前范围的jquery对象。如果将此对象保留在变量中,它将保存该初始化的性能
出于问题,我认为最好使用
var myID = $("#id");
var myClass = $(".your_class");
...
对于id,class,attributes对象。等因为当使用$()
时,Jquery将从当前网站DOM中搜索并初始化jquery对象,如果需要从多个dom扫描,则会降低性能
答案 2 :(得分:0)
var mythis = $(this);
会更好。
通过$(this)进行一次函数调用,并给出对该对象的引用。
简单来说,如果你要总结2个数字,那么更好的是什么?存储结果一次或一次又一次地计算。存储结果..对吗?