21.06.2020, 19:16
|
Аспирант
|
|
Регистрация: 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");
});
и все работает так, как хотелось.
|
|
21.06.2020, 19:28
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Тогда вообще не понять, что там за проблема, и зачем сначала удалять обработчик, затем сразу его же и устанавливать.
|
|
21.06.2020, 19:33
|
Аспирант
|
|
Регистрация: 10.06.2020
Сообщений: 43
|
|
Сообщение от laimas
|
Тогда вообще не понять, что там за проблема, и зачем сначала удалять обработчик, затем сразу его же и устанавливать.
|
мне нужно было, чтобы на сенсорном экране подменю открывалось при клике на пункты меню. Сейчас я сделал так, что и на компе и на сенсорном экране подменю открывается только при клике. Это все, чего я хотел
|
|
21.06.2020, 19:51
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
$(".navv li a.parent")
.unbind('click') //удаляет ранее установленный обработчик click
.bind('click' ... //устанавливает обработчик click
Это бессмыслица. У вас отменяет действие по умолчанию (переход) e.preventDefault();, а не unbind.
Что касается заменить открытие по наведению, то это у вас работает как раз на css. Ну если считаете, что теперь норма, пусть будет так.
|
|
21.06.2020, 20:12
|
Аспирант
|
|
Регистрация: 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.
|
|
21.06.2020, 20:20
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от zulfukar
|
Напишите как должно быть.
|
$(".navv li a.parent").click(function(e) {
e.preventDefault();
//и далее ваш код
})
Это и есть чего хотелось.
Сообщение от zulfukar
|
Сейчас работает как надо.
|
Если вам надо открывать разделы горизонтального меню щелчком, то нужно подправить и CSS. Но тогда вопрос - зачем вся эта кухня? Правильно будет выбросить это меню вообще, взять то, что урок показывает. Оно все работает по щелчкам, насколько я помню. Плюс ему вообще не требуется JS/JQ, а если его сделать сплошной заливкой как у вас, то это упрощает и CSS, так как из него можно будет убрать градиентную заливку.
Но мы же не ищем легких путей, так?
|
|
21.06.2020, 20:25
|
Аспирант
|
|
Регистрация: 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>).
|
|
21.06.2020, 20:59
|
Аспирант
|
|
Регистрация: 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");
});
}
|
|
21.06.2020, 21:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от zulfukar
|
дело в том, что у меня в движке меню настраивается в админке
|
В админке вы только разделы меню определяете, а вот код его определяется шаблоном, который можно подправить.
|
|
21.06.2020, 21:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А можно поступить и так, пусть готовится и простая структура, а вот добавление меток и флажков в код меню, это и сделает jQury при загрузке страницы, это все что он нее потребуется.
|
|
|
|