У меня проблема в моем проекте React. У меня есть меню, в котором есть подменю, в котором есть подменю Это разметка и код: [code][list] id="main-menu-navigation" data-menu="menu-navigation" className="navigation navigation-main" > [*]
[/list] [/code] Проблема в том, что onClick во внутреннем элементе «li» не срабатывает из-за прослушивателей событий jquery в сценариях шаблонов. этот код: [code][*] onSelectDashboard(e, dashboard)} > {dashboard.nom}66
[/code] файл меню приложения, содержащий код jquery [code] bind_events: function () { var menuObj = this;
$('.navigation-main') .on('mouseenter.app.menu', 'li', function () { var $this = $(this); $('.hover', '.navigation-main').removeClass('hover'); if ( $body.hasClass('menu-collapsed') || ($body.data('menu') == 'vertical-compact-menu' && !$body.hasClass('vertical-overlay-menu')) ) { $('.main-menu-content').children('span.menu-title').remove(); $('.main-menu-content').children('a.menu-title').remove(); $('.main-menu-content').children('ul.menu-content').remove();
// Content if ($this.hasClass('has-sub') && $this.hasClass('nav-item')) { var menuContent = $this.children('ul:first'); menuObj.adjustSubmenu($this); } } $this.addClass('hover'); }) .on('mouseleave.app.menu', 'li', function () { // $(this).removeClass('hover'); }) .on('active.app.menu', 'li', function (e) { $(this).addClass('active'); e.stopPropagation(); }) .on('deactive.app.menu', 'li.active', function (e) { $(this).removeClass('active'); e.stopPropagation(); }) .on('open.app.menu', 'li', function (e) { var $listItem = $(this); $listItem.addClass('open');
menuObj.expand($listItem);
// If menu collapsible then do not take any action if ($('.main-menu').hasClass('menu-collapsible')) { return false; } // If menu accordion then close all except clicked once else { $listItem.siblings('.open').find('li.open').trigger('close.app.menu'); $listItem.siblings('.open').trigger('close.app.menu'); }
e.stopPropagation(); }) .on('close.app.menu', 'li.open', function (e) { var $listItem = $(this);
e.stopPropagation(); }) .on('click.app.menu', 'li', function (e) { var $listItem = $(this); if ($listItem.is('.disabled')) { e.preventDefault(); } else { if ( $body.hasClass('menu-collapsed') || ($body.data('menu') == 'vertical-compact-menu' && $listItem.is('.has-sub') && !$body.hasClass('vertical-overlay-menu')) ) { e.preventDefault(); } else { if ($listItem.has('ul')) { if ($listItem.is('.open')) { $listItem.trigger('close.app.menu'); } else { $listItem.trigger('open.app.menu'); } } else { if (!$listItem.is('.active')) { $listItem.siblings('.active').trigger('deactive.app.menu'); $listItem.trigger('active.app.menu'); } } } }
e.stopPropagation(); });
$('.main-menu-content').on('mouseleave', function () { if ($body.hasClass('menu-collapsed') || $body.data('menu') == 'vertical-compact-menu') { $('.main-menu-content').children('span.menu-title').remove(); $('.main-menu-content').children('a.menu-title').remove(); $('.main-menu-content').children('ul.menu-content').remove(); } $('.hover', '.navigation-main').removeClass('hover'); });
// If list item has sub menu items then prevent redirection. $('.navigation-main li.has-sub > a').on('click', function (e) { e.preventDefault(); });
$('ul.menu-content').on('click', 'li', function (e) { var $listItem = $(this); if ($listItem.is('.disabled')) { e.preventDefault(); } else { if ($listItem.has('ul')) { if ($listItem.is('.open')) { $listItem.removeClass('open'); menuObj.collapse($listItem); } else { $listItem.addClass('open');
menuObj.expand($listItem);
// If menu collapsible then do not take any action if ($('.main-menu').hasClass('menu-collapsible')) { return false; } // If menu accordion then close all except clicked once else { $listItem.siblings('.open').find('li.open').trigger('close.app.menu'); $listItem.siblings('.open').trigger('close.app.menu'); }
e.stopPropagation(); }); } [/code] Примечания: [list] [*]Если я прокомментирую код jQuery, он работает, но мне нужен jQuery для многих других функций. [*]Только событие onClick не работает, если я попробую любое другое событие, например onHover, onClickEnter и т. д. Оно работает нормально. [/list] Я не нашел решение, я надеюсь, что вы сможете мне помочь, и спасибо