Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 21.06.2020, 19:16
Аспирант
Отправить личное сообщение для zulfukar Посмотреть профиль Найти все сообщения от zulfukar
 
Регистрация: 10.06.2020
Сообщений: 43

Сообщение от laimas Посмотреть сообщение
У меня нет моб. устройств этого бренда, я не могу ничего проверить, но я могу сказать точно, что на этих устройствах возникает проблема с css :hover. Об этом много в сети написано, если только в этом проблема, почитайте как ее решают, ну или подключите jQuery Mobile.
Все оказалось намного проще. Сам сделал методом тыка, просто вместо этого куска кода
$(".navv li").unbind('mouseenter mouseleave').bind('mouseenter mouseleave', function() {
		 	// must be attached to li so that mouseleave is not triggered when hover over submenu
		 	$(this).toggleClass('hover');
		});

вставил
$(".navv li a.parent").unbind('click').bind('click', function(e) {
			// must be attached to anchor element to prevent bubbling
			e.preventDefault();
			$(this).parent("li").toggleClass("hover");
		});

и все работает так, как хотелось.
Ответить с цитированием
  #32 (permalink)  
Старый 21.06.2020, 19:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Тогда вообще не понять, что там за проблема, и зачем сначала удалять обработчик, затем сразу его же и устанавливать.
Ответить с цитированием
  #33 (permalink)  
Старый 21.06.2020, 19:33
Аспирант
Отправить личное сообщение для zulfukar Посмотреть профиль Найти все сообщения от zulfukar
 
Регистрация: 10.06.2020
Сообщений: 43

Сообщение от laimas Посмотреть сообщение
Тогда вообще не понять, что там за проблема, и зачем сначала удалять обработчик, затем сразу его же и устанавливать.
мне нужно было, чтобы на сенсорном экране подменю открывалось при клике на пункты меню. Сейчас я сделал так, что и на компе и на сенсорном экране подменю открывается только при клике. Это все, чего я хотел
Ответить с цитированием
  #34 (permalink)  
Старый 21.06.2020, 19:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$(".navv li a.parent")
.unbind('click') //удаляет ранее установленный обработчик click
.bind('click' ... //устанавливает обработчик click


Это бессмыслица. У вас отменяет действие по умолчанию (переход) e.preventDefault();, а не unbind.

Что касается заменить открытие по наведению, то это у вас работает как раз на css. Ну если считаете, что теперь норма, пусть будет так.
Ответить с цитированием
  #35 (permalink)  
Старый 21.06.2020, 20:12
Аспирант
Отправить личное сообщение для zulfukar Посмотреть профиль Найти все сообщения от zulfukar
 
Регистрация: 10.06.2020
Сообщений: 43

Сообщение от laimas Посмотреть сообщение
$(".navv li a.parent")
.unbind('click') //удаляет ранее установленный обработчик click
.bind('click' ... //устанавливает обработчик click


Это бессмыслица. У вас отменяет действие по умолчанию (переход) e.preventDefault();, а не unbind.

Что касается заменить открытие по наведению, то это у вас работает как раз на css. Ну если считаете, что теперь норма, пусть будет так.
ну я же не разбираюсь в этом. Напишите как должно быть.
Сейчас работает как надо. Если в коде есть что-то лишнее или какая-то ошибка, то напишите пожалуйста как будет правильно и я изменю.

оригинальный скрипт в этом сообщении.

Последний раз редактировалось zulfukar, 21.06.2020 в 20:17.
Ответить с цитированием
  #36 (permalink)  
Старый 21.06.2020, 20:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от zulfukar
Напишите как должно быть.
$(".navv li a.parent").click(function(e) {
    e.preventDefault();
    //и далее ваш код
})


Это и есть чего хотелось.

Сообщение от zulfukar
Сейчас работает как надо.
Если вам надо открывать разделы горизонтального меню щелчком, то нужно подправить и CSS. Но тогда вопрос - зачем вся эта кухня? Правильно будет выбросить это меню вообще, взять то, что урок показывает. Оно все работает по щелчкам, насколько я помню. Плюс ему вообще не требуется JS/JQ, а если его сделать сплошной заливкой как у вас, то это упрощает и CSS, так как из него можно будет убрать градиентную заливку.

Но мы же не ищем легких путей, так?
Ответить с цитированием
  #37 (permalink)  
Старый 21.06.2020, 20:25
Аспирант
Отправить личное сообщение для zulfukar Посмотреть профиль Найти все сообщения от zulfukar
 
Регистрация: 10.06.2020
Сообщений: 43

Сообщение от laimas Посмотреть сообщение
$(".navv li a.parent").click(function(e) {
    e.preventDefault();
    //и далее ваш код
})


Это и есть чего хотелось.



Если вам надо открывать разделы горизонтального меню щелчком, то нужно подправить и CSS. Но тогда вопрос - зачем вся эта кухня? Правильно будет выбросить это меню вообще, взять то, что урок показывает. Оно все работает по щелчкам, насколько я помню. Плюс ему вообще не требуется JS/JQ, а если его сделать сплошной заливкой как у вас, то это упрощает и CSS, так как из него можно будет убрать градиентную заливку.

Но мы же не ищем легких путей, так?
дело в том, что у меня в движке меню настраивается в админке, а на сайте выводится только {menu}
меню построено так: <ul><li></li></ul>, а в Вашем уроке есть лишние команды типа <label> и тд, которые мне некуда вставить. Мне пришлось искать меню имеющие такую структуру (<ul><li></li></ul>).
Ответить с цитированием
  #38 (permalink)  
Старый 21.06.2020, 20:59
Аспирант
Отправить личное сообщение для zulfukar Посмотреть профиль Найти все сообщения от zulfukar
 
Регистрация: 10.06.2020
Сообщений: 43

Сообщение от laimas Посмотреть сообщение
$(".navv li a.parent").click(function(e) {
    e.preventDefault();
    //и далее ваш код
})
привел код к такому виду. Я правильно сделал? css править не пришлось, так как никаких изменений не произошло.
else if (ww >= 900) {
		$(".toggleMenu").css("display", "none");
		$(".navv").show();
		$(".navv li").removeClass("hover");
		$(".navv li a").unbind('click');
		$(".navv li a.parent").click(function(e) {
			e.preventDefault();
			$(this).parent("li").toggleClass("hover");
		});
	}
Ответить с цитированием
  #39 (permalink)  
Старый 21.06.2020, 21:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от zulfukar
дело в том, что у меня в движке меню настраивается в админке
В админке вы только разделы меню определяете, а вот код его определяется шаблоном, который можно подправить.
Ответить с цитированием
  #40 (permalink)  
Старый 21.06.2020, 21:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А можно поступить и так, пусть готовится и простая структура, а вот добавление меток и флажков в код меню, это и сделает jQury при загрузке страницы, это все что он нее потребуется.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь яваскриптеров espltd Элементы интерфейса 2 03.03.2017 10:38
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17