2011-10-19 72 views
0

我只想讓我知道如何優化此代碼段?優化jQuery代碼?

$('#datedebut').change(function() { 
    if (Date.parse($('#datefin').val()) - Date.parse($(this).val()) <= 0) { 
     alert('Impossible'); 
    } 
}); 

$('#datefin').change(function() { 
    if (Date.parse($(this).val()) - Date.parse($('#datedebut').val()) <= 0) { 
     alert('Impossible'); 
    } 
}); 

我認爲這是重複相同的事情,但我不知道如何找到經過優化的東西,當然也很簡單。

非常感謝您的建議。

回答

3

如果你不介意再次擡頭的元素,你可以簡單地做

$('#datedebut, #datefin').change(function() { 
    if (Date.parse($('#datefin').val()) - Date.parse($('#datedebut').val()) <= 0) { 
     alert('Impossible'); 
    } 
}); 

當然,你也可以選擇元素一次,並保持對它們的引用...

然而,它在性能方面不是最優化的。

+0

沒關係,應仔細閱讀第一。 –

+0

我真的不能看到更好的方式來做到這一點!無論如何,爲了進行比較,需要查閱這兩個元素。我可以想象一種緩存每次查找的方法,以便它只執行一次,但是結果代碼比需要的更冗長。除非它是一個運行數千次的迭代器,否則不需要在一個簡單的函數上優化性能。 –

0

你可以試試這個:

<input type="text" id="datefin" onchange="validateChange()" /> 
<input type="text" id="datedebut" onchange="validateChange()" /> 

<script type="text/javascript"> 
    function validateChange(){ 
     if (Date.parse($('#datefin').val()) - Date.parse($('#datedebut').val()) <= 0) { 
      alert('Impossible'); 
     } 
    }); 
</script> 
+0

內聯事件處理程序通常可以很好地避免這些日子。 –