Javascript 在jQueryUi小部件中是否有获取内部属性的默认方法?
Im使用jQueryUILabs调用选择菜单中的现有小部件。它具有关闭和打开事件的回调选项。问题是,在这些事件中,我需要设置一个节点的动画,该节点是小部件的一部分,但不是它所连接的对象。为此,我需要访问此节点 例如,如果我要实际修改小部件代码本身:Javascript 在jQueryUi小部件中是否有获取内部属性的默认方法?,javascript,jquery,jquery-ui,scope,Javascript,Jquery,Jquery Ui,Scope,Im使用jQueryUILabs调用选择菜单中的现有小部件。它具有关闭和打开事件的回调选项。问题是,在这些事件中,我需要设置一个节点的动画,该节点是小部件的一部分,但不是它所连接的对象。为此,我需要访问此节点 例如,如果我要实际修改小部件代码本身: // ... other methods/properties "open" : function(event){ // ... the original logic // this is my animation $(t
// ... 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
然而,当我在事件处理程序的作用域中附加时,这个就是我调用小部件的原始元素。我需要小部件实例或小部件实例的list
属性
$('select#custom').selectmenu({
'open': function(){
// in this scope `this` is an HTMLSelectElement not the ui widget
}
});
从小部件获取列表
属性的最佳方法是什么
编辑:注意,我在下面发布了我的最终解决方案。但是,我不喜欢返回DOM来获取元素,因此,我仍然有兴趣了解覆盖/扩展现有小部件或特定内部构件的最佳实践。因此,最后我似乎忽略了列表中基于插件名称和原始元素id分配id的内容。因此,以下方法有效:
jQuery(function(){
jQuery('select#custom').selectmenu({
width: 100,
'style': 'dropdown',
"open": function(e, data){
var menu = jQuery('ul#'+$(this).attr('id')+'-menu');
menu.hide().slideDown('slow');
},
"close": function(e, data){
var menu = $('ul#'+jQuery(this).attr('id')+'-menu');
menu.addClass('ui-selectmenu-open').slideUp('slow', function(){
menu.removeClass('ui-selectmenu-open');
});
},
"change": function(){window.location = $(this).val();}
});
});
因此,最后我似乎忽略了列表根据插件名称和原始元素id分配id的内容。因此,以下内容有效:
jQuery(function(){
jQuery('select#custom').selectmenu({
width: 100,
'style': 'dropdown',
"open": function(e, data){
var menu = jQuery('ul#'+$(this).attr('id')+'-menu');
menu.hide().slideDown('slow');
},
"close": function(e, data){
var menu = $('ul#'+jQuery(this).attr('id')+'-menu');
menu.addClass('ui-selectmenu-open').slideUp('slow', function(){
menu.removeClass('ui-selectmenu-open');
});
},
"change": function(){window.location = $(this).val();}
});
});
.list是类的名称吗?否,list
是一个ul
元素,小部件使用它来模拟标准select
标记中的选项下拉列表。此外,我无法通过选择器选择此选项,因为我可能在一个页面上有多个选项,并且它们不会具有仅id的类。您是否尝试过:$(this)。查找('ul')。slideUp('slow')而不必:$(this.list)。slideUp('slow')@val:但是所讨论的ul
与这个引用的select元素没有任何关系,这就是问题所在,我需要一个列表引用,我无法将它从dom中拉出,因为没有可靠的方法。@val:实际上我收回了它。。。它在widget类的基础上添加了一个我以前错过的ID。我可以在上面使用一个标准选择器。列表是一个类的名称吗?不,list
是一个ul
元素,小部件使用它来模拟标准select
标记中的选项下拉列表。此外,我无法通过选择器选择此选项,因为我可能在一个页面上有多个选项,并且它们不会具有仅id的类。您是否尝试过:$(this)。查找('ul')。slideUp('slow')而不必:$(this.list)。slideUp('slow')@val:但是所讨论的ul
与这个引用的select元素没有任何关系,这就是问题所在,我需要一个列表引用,我无法将它从dom中拉出,因为没有可靠的方法。@val:实际上我收回了它。。。它在widget类的基础上添加了一个我以前错过的ID。我可以用一个标准的选择器。