私はこれがあなたが探しているものかもしれないと信じています. を呼び出すと、(デレクが言ったように) クラス名の設定など.menu()
、関数内で多くのことがトリガーされ_create()
ます。次に、 の 123-135 行でjquery.ui.menu.js
、これが発生します。
this.refresh();
// Clicks outside of a menu collapse any open menus
this._on( this.document, {
click: function( event ) {
if ( !$( event.target ).closest( ".ui-menu" ).length ) {
this.collapseAll( event );
}
// Reset the mouseHandled flag
mouseHandled = false;
}
});
2 番目の部分では、ユーザーがメニュー ( )this.document
の外側のページ ( ) をクリックしたときに、すべてのメニューが折りたたまれていることを確認します。これで 2 番目の質問に答えることができます。.ui-menu
this.collapseAll()
this._close()
hide()
最初の質問については、refresh()
関数が最初に行うことは次のとおりです。
// Initialize nested menus
var menus,
icon = this.options.icons.submenu,
submenus = this.element.find( this.options.menus + ":not(.ui-menu)" )
.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
.hide()
.attr({
role: this.options.role,
"aria-hidden": "true",
"aria-expanded": "false"
});
これにより、以前に初期化されていないすべてのサブメニュー (この場合は から来ているため、すべて_create()
) が検出され、非表示も含めて初期化されます。