#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть боковая панель с 3 разделами:
- В мобильных разрешениях эти разделы выглядят как вкладки аккордеона, при этом виден только заголовок, нажатие на привязку внутри элемента заголовка запускает slideToggle, который показывает / скрывает остальное содержимое в этом разделе. Это работает.
- В разрешениях рабочего стола всегда видны 3 раздела и все их содержимое, поэтому в основном нажатие на заголовок ничего не должно делать. Когда я загружаю / обновляю страницу в разрешении рабочего стола, щелчок по элементу привязки заголовка ничего не делает (и это здорово), но если я переключусь на мобильное разрешение, а затем снова переключусь на разрешение рабочего стола, то щелчок по элементу привязки заголовка переключит содержимое, поэтому, пожалуйста, дайте мне знать, как это остановитьЭффект slideToggle на рабочем столе.
Код jQuery:
$(window).on('load resize', function(){
if ($('#page-content').width() < 991 ) {
$('#primary-sidebar header > a').click(function(e) {
e.preventDefault();
$(this).parent('header').siblings('.widget').slideToggle();
});
} else if ($('#page-content').width() > 992 ) {
$('#primary-sidebar header > a').click(function(e) {
return false;
});
}
});
Спасибо!!!
Комментарии:
1. Вы пробовали
e.preventDefault();
вместо возврата false на рабочем столе?2. Да, я реализовал e.preventDefault() Также пробовал e.stopPropagation(), к сожалению, не работает.
3. Во-первых, этот код настолько неоптимизирован. При каждом изменении размера окна будет добавлен новый обработчик событий, его может быть намного больше, чем 1.. Вам нужен чистый обработчик щелчков, прежде чем добавлять его с помощью
$('#primary-sidebar header > a').unbind('click')
4. Спасибо Максу. Это работает.
Ответ №1:
Хотя отмена привязки события щелчка сработала, $(window).on('load resize', function(){
это создавало проблемы при изменении размера окна, эффект slideToggle запускался несколько раз одним щелчком мыши. Нет необходимости изменять размер окна / загружать строку кода. Ниже приведен код, который отлично работает для меня.
$('#primary-sidebar header > a').on('click', function(e) {
e.preventDefault();
var width = $('#page-content').width();
if (width <= 991) {
$(this).parent('header').siblings('.widget').slideToggle();
$(this).find('.fa.fa-chevron-left').toggleClass('fa-chevron-down');
}
});