我在滑出菜單上工作,一切正常,除非我想單擊下拉鍊接時打開任何其他打開的鏈接。這裏是jQuery的我正在添加一個類來改變下拉的狀態:jQuery,當點擊另一個鏈接時,改變鏈接的狀態
(function ($) {
'use strict';
var defaults = {};
function Sidenav (element, options) {
this.$el = $(element);
this.opt = $.extend(true, {}, defaults, options);
this.init(this);
}
Sidenav.prototype = {
init: function (self) {
self.initToggle(self);
self.initDropdown(self);
},
initToggle: function (self) {
$(document).on('click', function (e) {
var $target = $(e.target);
if ($target.closest(self.$el.data('sidenav-toggle'))[0]) {
self.$el.toggleClass('show');
$('body').toggleClass('sidenav-no-scroll');
self.toggleOverlay();
} else if (!$target.closest(self.$el)[0]){
self.$el.removeClass('show');
$('body').removeClass('sidenav-no-scroll');
self.hideOverlay();
}
});
},
initDropdown: function (self) {
self.$el.on('click', '[data-sidenav-dropdown-toggle]', function (e) {
var $this = $(this);
$this
.next('[data-sidenav-dropdown]')
.slideToggle('fast');
$this
.toggleClass('show');
e.preventDefault();
});
},
toggleOverlay: function() {
var $overlay = $('[data-sidenav-overlay]');
if (!$overlay[0]) {
$overlay = $('<div data-sidenav-overlay class="sidenav-overlay"/>');
$('body').append($overlay);
}
$overlay.fadeToggle('fast');
},
hideOverlay: function() {
$('[data-sidenav-overlay]').fadeOut('fast');
}
};
$.fn.sidenav = function (options) {
return this.each(function() {
if (!$.data(this, 'sidenav')) {
$.data(this, 'sidenav', new Sidenav(this, options));
}
});
};
})(window.jQuery);
目前,點擊與數據sidenav-下拉鍊接時,我加入一類的「作秀」,並將CSS中的顯示更改爲「block」。我不確定如何在單擊鏈接時從其他打開的下拉列表中刪除「show」類。我只想要一次打開一個。希望這是有道理的。