Не знаю, у меня прокатило и работает ;)
function ExtendFunctionality() { $.datepicker.constructor.prototype._updateDatepicker = function(inst) { // code from date picker ModifyDatePicker(); // OUR CHANGES } } с _generateHTML тоже пробовал и тоже работает |
персанальное спасибо x-yuri за:
var oldGenerateHTML = $.datepicker.constructor.prototype._generateHTML; $.datepicker.constructor.prototype._generateHTML = function(){ oldGenerateHTML.apply(this, arguments); ... } 50 строк гавнокода долой ! |
Цитата:
|
Поспешил радоваться, почти все методы datepicker'a имеют ссылки this, который адресуюстя на инстанс datepicker'a, а когда мы пишем так:
var oldGenerateHTML = $.datepicker.constructor.prototype._generateHTML; то он в this разпазнает как window, а не $.datepicker А когда код вбиваешь туда текстом, то почему то все ок |
x-yuri,
Да, все верно. Я смотрел у себя какую-то не ту версию Datepickera :) |
Цитата:
|
function ExtendFunctionality() { $.datepicker.constructor.prototype._updateDatepicker = function(inst) { // когда здесь пишется this, тогда он воспринимается как $.datepicker ModifyDatePicker(); // OUR CHANGES } } при данном раскладе, this рассматривается как window и идет прямиком в код datepicker'a: function ExtendFunctionality() { var oldUpdateDatepicker = $.datepicker.constructor.prototype._updateDatepicker; $.datepicker.constructor.prototype._updateDatepicker = function(inst) { oldUpdateDatepicker(inst); // когда начинает выполнятся код отсюда, то this это уже window ModifyDatePicker(); // OUR CHANGES } } Вот что валяется в _updateDatepicker: /* Generate the date picker content. */ _updateDatepicker: function(inst) { var dims = {width: inst.dpDiv.width() + 4, height: inst.dpDiv.height() + 4}; var self = this; inst.dpDiv.empty().append(this._generateHTML(inst)) // первое место, где this уже не тот .find('iframe.ui-datepicker-cover'). css({width: dims.width, height: dims.height}) .end() . . . // и т.д. и т.п. . . . . . . . .. .. .. . . .. . . . . . . . .. . .. . . . .. . } |
walash, Вам же x-yuri писал как надо:
вместо oldUpdateDatepicker(inst)используйте oldGenerateHTML.apply(this, arguments) |
Ребята, я вас люблю
|
Часовой пояс GMT +3, время: 12:38. |