-
-
Save s0ber/2664718 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$.extend($.Autocompleter.prototype, { | |
position: function() { | |
var offset = this.dom.$elem.offset(); | |
this.dom.$results.css({ | |
bottom: Plca.view.partials.$body.height() - offset.top, | |
left: offset.left | |
}); | |
}, | |
cloneFunc: function(func) { | |
var temp = function() { | |
return func.apply(this, arguments); | |
}; | |
for (key in func) { | |
temp[key] = func[key]; | |
} | |
return temp; | |
}, | |
createTempFunc: function() { | |
if (this.tempShowResults && typeof(this.tempShowResults) === 'function') { | |
return NO; | |
} else { | |
this.tempShowResults = this.cloneFunc($.Autocompleter.prototype.showResults); | |
} | |
} | |
}); | |
$.Autocompleter.prototype.createTempFunc(); | |
$.Autocompleter.prototype.showResults = function(results, filter) { | |
// Вызываем оригинальное отображение | |
this.tempShowResults(results, filter); | |
if (this.options.afterShowingResult && typeof(this.options.afterShowingResult) === 'function') { | |
this.options.afterShowingResult.call(this, results, filter); | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Метод position нельзя изменять у глобального объекта так как это измененеие не расширяет старый | |
// функционал, а полностью его заменяет следовательно из-за этого могут возникнуть проблемы с | |
// элементами где требуется стандартный функционал. | |
// Такие методы нужно переопределять локально на месте инициализации библиотеки, благо эта | |
// библиотека такое позволяет делать | |
// | |
// Для расширения метода в прототипе объекта с сохранением старого функционала нужно использовать | |
// самовызывающуюся анонимную функцию с передачей в качестве аргумента ссылки на старый метод | |
$.Autocompleter.prototype.showResults = (function(fn) { | |
return function() { | |
fn.apply(this, arguments); // Вызываем оригинальный метод с передачей в него всех аргументов переданные при вызове нового метода showResults | |
// typeof сделает проверку на существование метода afterShowingResult, так как если он не будет | |
// существовать, то вернется "undefined", что уже не попадает под условие равенства с "function" | |
if (typeof(this.options.afterShowingResult) === 'function') { | |
this.options.afterShowingResult.apply(this, arguments); // Так же вызываем метод через apply чтоб можно было передать весь список аргументов не заботясь о их количестве или порядке | |
} | |
} | |
})($.Autocompleter.prototype.showResults); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment