Я делаю плагин:
$.widget("my.idautocomplete", $.ui.autocomplete, {
options: {
oldselect:{},
id:""
},
_create: function () {
$.ui.autocomplete.prototype._create.call(this);
this.options.oldselect=this.options.select;
this.options.select=this.sel;
},
sel:function (event, ui) {
console.log("Autocomplete sel " + $(this).attr("id"));
}
}
позже я попробую использовать этот выбор как:
$("input").idautocomplete({select:function(){alert(1);} });
Затем замените этот выбор, я не вижу сообщений... log ("Autocomplete sel... Моя функция" sel "не работает после этого. Как я могу написать свой выбор, какой uset в плагине, а не сбой, тогда он заменяется внешним кодом?
в коде:
$.widget("my.idautocomplete", $.ui.autocomplete, {
options: {
id:""
},
select:function (event, ui) {
console.log("Autocomplete sel " + $(this).attr("id"));
}
}
"select" не работает, а затем выбирает элемент в выпадающем меню
$.widget("my.idautocomplete", $.ui.autocomplete, {
options: {
oldselect:undefined,
select:function sel_(event, ui) {
var th=this;
//some my plugin code
...
// call select added from HTML programmer
$(th).idautocomplete("sel",event, ui);
}
},
sel:function oldSel(event, ui) {
var th=this;
// if has external added select, call it
var oldSelect = th.options.oldselect;
if(oldSelect!==undefined){
oldSelect.call(th,event, ui);
}
},
_setOption: function () {
if (arguments[0]=="select") {
//getting a new onSelect function and save it in options
this.options.oldselect=arguments[1];
//save private plugin select
var tst=this.options.select;
// call _setOption to correct initialisation autocomplete
$.ui.autocomplete.prototype._setOption.apply(this, arguments);
// restore private select as default
this.options.select=tst;
}else{
$.ui.autocomplete.prototype._setOption.apply(this, arguments);
}
},
.....
})(jQuery, window, document);
sel
иselect