gpt4 book ai didi

jQuery UI Datepicker 与 jQuery Tipsy

转载 作者:行者123 更新时间:2023-12-03 22:41:05 26 4
gpt4 key购买 nike

任何如何实现的想法tipsy jQuery 的 UI Datepicker 上的工具提示?基本上我想在用户在日期选择器中的特定日期移动时获得工具提示。日期选择器将内联显示并且始终可见。

谢谢!

最佳答案

听起来很酷,

这是我的解决方案。阅读评论。

(function($){


/**
* Returns a dictionary, where the keys are the day of the month,
* and the value is the text.
* @param year - The year of the events.
* @param month - The month of the events.
* @param calendarID - Events for a specific calendar.
*/
function getMonthEvents(year, month, calendarId){
return {11: "My birthday.", 23: "My anniversary" };
}

// Receives January->1
function addTipsys(year, month, calendarId){
var theEvents = getMonthEvents(year, month, calendarId);
var theDateLinks = $('#' + calendarId + ' .ui-datepicker-calendar a');
for(eventDay in theEvents){
// Minus one, because the date in the tipies are regular dates (1-31)
// and the links are 0-based.
theDateLinks.eq(eventDay-1) // select the right link
.attr('original-title', theEvents[eventDay]) // set the text
.tipsy(); // init the tipsy, set your properties.
}
}

// Because the the event `onChangeMonthYear` get's called before updating
// the items, we'll add our code after the elements get rebuilt. We will hook
// to the `_updateDatepicker` method in the `Datepicker`.
// Saves the original function.
var _updateDatepicker_o = $.datepicker._updateDatepicker;
// Replaces the function.
$.datepicker._updateDatepicker = function(inst){
// First we call the original function from the appropiate context.
_updateDatepicker_o.apply(this, [inst]);
// No we can update the Tipsys.
addTipsys(inst.drawYear, inst.drawMonth+1, inst.id);
};

// Finally the calendar initializer.
$(function(){
// Creates the date picker, with your options.
$("#datepicker").datepicker();
// Gets the date and initializes the first round of tipsies.
var currentDate = $('#datepicker').datepicker('getDate');
// month+1 because the event considers January->1
// Last element is null, because, it doesn't actualy get used in the hanlder.
addTipsys(currentDate.getYear(), currentDate.getMonth()+1, 'datepicker');
});

})(jQuery);

不便:

  1. _updateDatepicker当用户从可见月份中选择一天,或者通过 datepicker('setDate', theDate) 设置日期时,也会调用 get 方法。 ,这可能有点低效。

  2. 它依赖于日期选择器的私有(private)函数,如果在未来的版本中他们决定更改其功能或更改名称,则此代码将会损坏。尽管由于该功能的性质,我认为这种情况不会很快发生。

注意:我的第一个方法是 Hook onChangeMonthYear事件ui.datepicker ,但由于事件被触发,在替换日历中的日期之前,addTipsys方法,会将醉酒添加到即将清除的日历日期中。因此需要调用addTipsys元素刷新后的事件。

简单破解:将方法 Hook 到 onChangeMonthYear日历中的事件,并执行 setTimeout 来调用醉酒的事件。需要进行一些验证。

关于jQuery UI Datepicker 与 jQuery Tipsy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com