2011-03-07 35 views
1

我有以下代碼方法對象初始化僅調用一次每個頁面加載

$(".datePicker").datepicker({ 
    dateFormat: 'dd/mm/yy', 
    autoSize: true, 
    changeYear: true, 
    changeMonth: true, 
    yearRange: getYearRange() 
}); 

雖然有很多.datePickers的getYearRange函數只調用一次。 要明確,getYearRange函數將用$(this)參數調用。

回答

1

嘗試指定函數名稱而不是的「()」。當你這樣做時,你會將該配置屬性設置爲對該函數的引用。當你使用「()」進行編碼時,你會告訴JavaScript 調用該函數將它放在一起,以便它可以使用返回值。

現在,假設日期選擇器代碼預計在那裏有函數。如果你想要做的是初始化每個日期選取器控件的一些特殊計算年份範圍的基礎上,參與其中,那麼你會做一些不同的DOM元素(S)的特點:

$('.datepicker').each(function() { 
    var $dp = $(this); 
    $dp.datepicker({ 
    dateFormat: 'dd/mm/yy', 
    autoSize: true, 
    changeYear: true, 
    changeMonth: true, 
    yearRange: getYearRange.call(this) 
    }); 
}); 

那倒確保每個日期選擇器都有機會單獨計算出自己的年份範圍。

編輯 —審查jQuery UI的日期選擇器的文檔,我不認爲如果你通過這種方式(如函數引用),它會調用你的「getYearRange」功能。因此,如果您希望該函數在頁面上每個每個日期選擇器運行一次,那麼您將使用上面的「.each()」循環。

+0

現在它根本沒有被調用:( – 2011-03-07 15:08:47

+0

那麼你是做了我寫的第一件事,還是第二件事?我會檢查jQuery UI文檔,這一切都取決於你的「getYearRange」函數的作用,但是你沒有發佈它,所以我不知道你的目標是什麼。 – Pointy 2011-03-07 15:10:04

+0

我的回答是第一個答案,我會給第二個答案一個鏡頭,看起來很穩定,希望我的JS是beter; ) – 2011-03-07 15:11:40

相關問題