2016-05-22 50 views
2

我只是想知道是否有一個更清潔的方式來傳遞id到timepicker函數。下面是我有:更清潔的方式來傳遞id到jquery

JS:

function timedrop(id){ 
    $("#" + id).timepicker(); 
    $("#" + id).timepicker('option', { 'minTime': '9:00am', 'maxTime': 
             '9:00pm', 'timeFormat': 'h:i A' }); 
} 

HTML:

<input id="basicExample" onclick="timedrop(this.id);" type="text" class="time ui-timepicker-input" autocomplete="off"> 
+1

一個更清晰的方法是將你的JS從你的HTML中分離出來(更容易維護並追蹤錯誤來自哪裏) – blex

+1

只需使用class而不用擔心ID或'onclick'並使用'$ ('.ui-timepicker-input')。timepicker({/ * options object/*})' – charlietfl

+0

此外,您所擁有的代碼將在每次點擊時創建一個新的時間選擇器。你可能只想在頁面加載時做到這一點。 – blex

回答

3

簡而言之:沒有。這可能是最好的方法。但是你可以讓你的代碼更有效的通過使用自定義類(您不必執行JavaScript每次):

HTML:

<input id="basicExample" type="text" class="time ui-timepicker-input special-time" autocomplete="off"> 

JS:

$('.special-time').click(function(){ 
    $(this).timepicker('option', { 'minTime': '9:00am', 'maxTime': 
              '9:00pm', 'timeFormat': 'h:i A' }); 
}); 
+0

你的回答比我的好,所以我刪除了我的。不是爭論,但對於OP的問題,你肯定比OP更清潔。它只是沒有通過#id,因爲它不需要。 –

0

如果您不需要ID其他地方,然後通過this應該工作:

function timedrop(elem){ 
    $(elem).timepicker(); 
    $(elem).timepicker('option', { 'minTime': '9:00am', 'maxTime': 
             '9:00pm', 'timeFormat': 'h:i A' }); 
} 

<input id="basicExample" onclick="timedrop(this);" type="text" 
     class="time ui-timepicker-input" autocomplete="off"> 

編輯:當然其他人提出了一些合理的建議。我的回答只是爲了讓代碼看起來更乾淨。

相關問題