Cha*_*ion 2 javascript performance jquery refactoring
这个JS将在包含很多字段的页面上执行.你能不能看到提高这段代码的速度?如果是这样,你能解释一下你找到了什么吗?
var _TextInputs = null;
function GetTextInputs()
{
if (_TextInputs == null)
{
_TextInputs = jq('input[type=text]');
}
return _TextInputs;
}
var _Spans = null;
function GetSpans()
{
if (_Spans == null)
{
_Spans = jq('span');
}
return _Spans;
}
function UpdateRate(ratefield, name)
{
GetTextInputs().filter('[' + name + ']').each(function()
{
this.value = FormatCurrencyAsString(FormatCurrencyAsFloat(ratefield.value));
CalculateCharge(name.replace('Rate', ''), jq(this).attr(name));
});
}
function CalculateCharge(name, activity_id)
{
var inputs = GetTextInputs();
var bill_field = inputs.filter('[' + name + 'Bill=' + activity_id + ']');
var rate_field = inputs.filter('[' + name + 'Rate=' + activity_id + ']');
var charge_field = GetSpans().filter('[' + name + 'Charge=' + activity_id + ']');
charge_field.text(FormatCurrencyAsString(FormatCurrencyAsFloat(bill_field.val()) * FormatCurrencyAsFloat(rate_field.val())));
}
Run Code Online (Sandbox Code Playgroud)
您可以:
each为whileval()为.value(只要这些字段是纯文本字段,就应该没问题)attr()为普通财产访问; 例如:this.attr(name)- >this.name这些都是相当不引人注目的变化,应该加快速度,主要是因为减少了函数调用.
如果这些元素是静态的(即在应用程序生命周期中未被修改),则不要在每个函数调用上查询元素.相反,将它们存储在循环之外.
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |