这只是一个简单的问题,因为我无法弄清楚这里的实际问题是什么,也许有人在扩展 jquery-ui 小部件方面有更多经验。
我试图改变menu._close
方法中的一些行为,像这样扩展小部件:
( function($, undefined ) {
$.widget('ui.menu', $.ui.menu, {
_close: function(startMenu) {
this._super('_close', startMenu)
console.log('extension works!')
}
} )
} (jQuery) );
据我发现的消息来源,这是正确的方法。但现在,问题在于_super
方法。它应该调用原始menu._close
方法,并且确实如此 - 将唯一的参数传递startMenu
给它。但是父方法失败了。
这是原始jquery-uimenu._close
方法的来源:
_close: function( startMenu ) {
if ( !startMenu ) {
startMenu = this.active ? this.active.parent() : this.element;
}
startMenu
.find( ".ui-menu" )
.hide()
.attr( "aria-hidden", "true" )
.attr( "aria-expanded", "false" )
.end()
.find( "a.ui-state-active" )
.removeClass( "ui-state-active" );
}
现在,它告诉我TypeError: startMenu.find is not a function
,是的,这不是因为this.element
它不是一个实际的 jQuery 对象。但我的问题是,为什么?
我只扩展了方法,没有改变任何功能,只在调用原始方法后添加了一个调试消息,向它传递了唯一的参数。我在这里做错了什么?
提前致谢,周末愉快!