假设我们有一个文本字段,在每次键按下事件时执行以下代码:
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是立即获取输入字段值的非常好的方法。再次感谢。
html
时避免调用。 - Denys SéguretSOMESTRING == ""
可以被替换为!SOMESTRING
。 - Ian