我正试图对我庞大的javascript应用程序进行一些严重的延迟削减。我一直在阅读优化代码的方法,从我学到的一些东西中,我了解到:
这是我在应用程序中经常运行的函数中现有代码的一部分:
if($('.textbox').length > 0)
{ $(".textbox").each(function(){
var parts = $(this).attr('id').split('_');
// do some linear-time operations here with $this
});
});到目前为止,我知道我应该将$this = $(this)放在.each()的开头,并且只使用$(this)。但我还能做什么呢?是否有更快捷的替代方式来使用.each()?我确实需要检查每个div和.textbox类。
发布于 2013-02-16 12:50:33
但我还能做什么呢?
有几件事:
if语句绝对没有意义(除非它有一个尚未显示的else子句),因为对空的jQuery对象调用.each是没有操作的。把它移开。$('.textbox') jQuery都必须停止并查询DOM。id是DOM元素实例上的反射属性,因此$(this).attr("id").split('_')包含多个函数调用和通过使用this.id.split('_')可以避免的内存分配。这就给了我们:
$('.textbox').each(function() {
var parts = this.id.split('_');
// Do something with `parts`
});或者,如果有一个else您还没有显示:
var boxes = $('.textbox');
if (boxes.length) {
boxes.each(function() {
var part s= this.id.split('_');
// ...
});
}
else {
// ...
}https://stackoverflow.com/questions/14910440
复制相似问题