想象一下,我们有一个文本字段,它在每个 keydown 事件上执行以下代码:
if( $('#my_input').val() == '' )
$('#my_span').html('my input is blank');
else
$('#my_span').html('My input is not blank');
显然,我们正在执行的代码可能会将某物(#my_span
元素)的状态设置为它已经存在的状态,这似乎效率低下。但我很好奇替代方案是什么?添加更多检查,例如:
if ( $('#my_input').val() == '' ){
if ( $('#my_span').html() != 'my input is blank' )
$('#my_span').html('my input is blank');
}
else if ( $('#my_span').html() != 'My input is not blank' )
$('#myspan').html('My input is not blank');
后者效率更高吗?在我看来,这似乎更“正确”,但显然它是更多代码,我不确定它比第一个示例效率多少。
我知道前者总是涉及 DOM 操作,这将影响计算相对效率,但我以前在非 DOM 相关代码中遇到过这样的情况,所以想知道在所有情况下最好的方法是什么。在将某项设置为新值之前,您是否应该始终对某项的值进行额外检查?
编辑:
我的最终版本实际上使用了这里的答案组合,因此感谢所有人的出色回复。总而言之,我现在:
- 在闭包中缓存 jquery 对象
- 使用状态来确定分配给新状态
顺便说一句,keydown 上的 setTimeout 是立即获取输入字段值的一种非常好的方法。再次感谢。