2010-05-26 94 views
0

所以我有我認爲是一個非常基本的問題,但我不能爲我的生活弄清楚。如何一次點擊就引用選定的日期元素(dom)。我試過這個:jquery ui datepicker onselect目標

$("#eventCalendar").datepicker({ 
onSelect: function(dateText,inst){ 
    var activeDateObj = $("#eventCalendar").find('.ui-state-active'); 
} 
}); 

這將返回一個對象,但我認爲它引用了先前選擇的元素;因爲在課堂上還沒有被應用到新的元素。我很驚訝inst對象不包含對被單擊元素的一些引用。我通過在變量聲明周圍包裝一個快速超時來獲得這個方法,但這非常骯髒,我想知道是否有更好的方法。提前致謝。

+0

你想做什麼? 'this'是指相關的輸入字段。 – Nalum 2010-05-26 09:21:21

+0

對不起。我的意思是$(「#eventCalendar」)。find('。ui-state-active');那有意義嗎? – 2010-05-26 09:31:17

+0

獲取選定元素後你想要做什麼? – Elangovan 2010-05-26 09:34:32

回答

1

回覆關於OP的意見。

從我可以告訴日曆似乎重新載入包含每天選擇一天的月份的表格,它也會在更改月份時執行此操作。

如果您使用.live('click',function(){...})這應該允許您附加您的功能。

對於選擇這樣的事情可能是最好的

//attached to an input, not displayed inline. 
$('#ui-datepicker-div .ui-datepicker table.ui-datepicker-calendar td[class!=ui-state-disabled]') 

現在您只需要找出選中了哪個日期。

+0

是的,這不是一個壞主意。不知道爲什麼我錯過了這個大聲笑..但我想知道是否有可能完成與「beforeShow」事件或「beforeShowDay」事件相同的事情? – 2010-05-26 15:42:22

+1

beforeShowDay將允許您顯示一個工具提示,您可以使用它來說明某一天的具體日期,但這兩個事件都不允許您根據我的理解在當天的點擊事件中設置功能。 我不是很確定你想要什麼,但在之前的ShowDay可能就足夠了,因爲你想要。 – Nalum 2010-05-26 15:49:45

+0

好吧,那不會工作。我有一個自定義生成工具提示,需要在鼠標懸停在特定日期時跟隨光標。在這個答案中的方法應該做的伎倆,這對我來說似乎有點粗糙。我想知道他們爲什麼沒有這種內置方法。 – 2010-05-26 15:57:39

0

解決方案

//... 
onSelect: function(date, inst) { 
    setTimeout(function() { 
     console.log($('a.ui-state-active')); // clicked day's DOM-Element 
    }, 0); 
} 

的setTimeout的-包裝將排隊的東西后的日曆得到了刷新。