Я использую существующий виджет из меню выбора вызова jquery-ui labs. У него есть опции обратного вызова для событий закрытия и открытия. Проблема в том, что мне нужно в этом случае анимировать узел, который является частью виджета, но не то, с чем он связан. Для этого мне нужен доступ к этому узлу.
например, если бы я на самом деле изменил сам код виджета:
// ... other methods/properties
"open" : function(event){
// ... the original logic
// this is my animation
$(this.list).slideUp('slow');
// this is the orginal call to _trigger
this._trigger('open', event, $this._uiHash());
},
// ... other methods/properties
Однако, когда в области действия обработчика событий я присоединяю this
, это оригинальный элемент, который я назвал виджетом. Мне нужен экземпляр виджета или, в частности, свойство list
экземпляра виджета.
$('select#custom').selectmenu({
'open': function(){
// in this scope `this` is an HTMLSelectElement not the ui widget
}
});
Как лучше всего получить свойство list
от виджета?
РЕДАКТИРОВАТЬ : обратите внимание, я разместил мое окончательное решение ниже. Однако мне не нравится возвращаться в DOM, чтобы получить элемент, поэтому я по-прежнему заинтересован в том, чтобы услышать лучшие практики по переопределению / расширению существующего виджета или определенных внутренних компонентов.