Я пытаюсь создать простое меню навигации с выпадающими меню. Я установил атрибут «data-dropdown» в «open» или «closed» с jQuery для использования в конце CSS. Я использую «Modernizr.touchevents» для определения поведения наведения/клика. Вот мой код:Выпадающее меню jQuery при щелчке по клику (при втором щелчке) родительский
(function ($) {
"use strict";
var menu = $('.navbar .menu');
// Return early if there's no menu
if (! menu) {
return;
}
var dropdownLi = menu.find('.menu-item-has-children');
var dropdownLink = menu.find('.menu-item-has-children > a');
// Return early if there's no dropdown
if (! dropdownLi) {
return;
}
// Set attr to all dropdowns by default
dropdownLi.attr('data-dropdown', 'closed');
// Use modernizr to decide on touch/hover behaviour
if (Modernizr.touchevents) {
dropdownLink.click(function(event) {
// Set 'data-dropdown' attr to 'opened'
$(this).parent().attr('data-dropdown', 'opened');
// Set 'data-dropdown' attr on other submeus to 'closed'
$(this).parent().siblings().attr('data-dropdown', 'closed');
// Set 'data-dropdown' attr on other nested subenus to 'closed'
$(this).parent().siblings().find('.menu-item-has-children').attr('data-dropdown', 'closed');
// Prevent default click
return false;
// event.preventDefault();
// event.stopImmediatePropagation();
});
// Close all menus on scroll
$('.site-wrapper').scroll(function() {
dropdownLi.attr('data-dropdown', 'closed');
});
// Close all dropdowns when clicked anywhere
$(document).click(function() {
dropdownLi.attr('data-dropdown', 'closed');
});
} else { // Now hover behaviour
dropdownLi.each(function() {
$(this).mouseenter(function() {
$(this).attr('data-dropdown', 'opened');
});
$(this).mouseleave(function() {
$(this).attr('data-dropdown', 'closed');
});
});
// Prevent default click if there's just a `#` instead of a link
dropdownLink.on('click', function(){
if (this.href.indexOf('#') != -1) {
return false;
// event.preventDefault();
// event.stopImmediatePropagation();
}
});
}
})(jQuery);
И теперь проблема. У «dropdownLink» может быть действительный атрибут href (не #). В этом случае мне нужно, чтобы он действовал так, как надо, во втором клике. Итак, в то время как на сенсорном устройстве первый щелчок открывает раскрывающийся список, а второй отправляет нам URL.
Исправьте свой ответ! Теперь я спрашиваю себя, как я не получил это самостоятельно, настолько очевидно. Спасибо! – Baltar
Иногда вы просто смотрите на него слишком долго, а затем теряетесь в своих мыслях! Рад, что смог помочь :) –