#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Застрял с некоторыми проблемами. У меня есть страница, где я использую @media для создания мобильной и планшетной версии отдельно. В мобильной версии я использую плагин mmenu jquery для создания скользящего меню. В планшетной версии я не хочу использовать это меню, но все же планирую использовать его html. Поэтому я решил удалить идентификатор, который показывает плагин mmenu, где ему нужно создать скользящее меню. Но по какой-то причине removeAttr от juery работает не так, как я ожидал. Ps: Я довольно новичок в js, поэтому я могу не знать о проблемах, связанных с работой браузера.
Я получил этот код (html довольно прост — nav, который обертывает кучу ul) :
var func = function() {
var width = $(window).width();
var menu = $(".menu");
/*if it is tablet*/
if (width > 401) {
menu.removeAttr("id");
}
/*loading mmenu*/
$(function() {
$('#my-menu').mmenu({
slidingSubmenus: false,
zposition: "next"
});
});
};
$(document).ready = func();
Я буду очень рад, если кто-нибудь разъяснит, в чем моя ошибка.
Комментарии:
1. Вы не можете быть уверены
width > 401
, что вычисляется правильно, например, ширина рассматривается как число. ИспользуйтеparseInt(width) > 401
вместо этого и посмотрите, что произойдет.2. @davidkonrad метод width в jquery всегда возвращает число.
3. Удаление идентификатора не кажется хорошим подходом. Почему бы просто не инициализировать плагин только тогда, когда
width < 402
?4.
$(document).ready = func();
это неверно.5. PS
$(function() {
— это то же самое,$(document).ready(function(){
что и . Нет причин использовать одно внутри другого.
Ответ №1:
Вы неправильно привязываете document.ready . Это должно быть
$(document).ready(func);
Вы не устанавливаете свойство и не вызываете свою функцию.
Комментарии:
1. Итак, я правильно понимаю: в моем коде я пытался установить значение ready с помощью моей функции, но согласно документации я должен передать свою функцию как свойство .ready() ?
2. @errdayvillain: Да.
.ready()
это уже свойство, это функция. Вам нужно ее вызвать. Вы заменяли эту функцию новым значением 🙂
Ответ №2:
Вместо удаления идентификатора из #my-menu
, вы можете переместить функцию, чтобы создать меню внутри функции проверки ширины. Таким образом, меню создается только в том случае, если ширина больше 401. В противном случае она вообще пропускается.
if (width > 401) {
$(function(){
$('#my-menu').mmenu(...);
});
}
Комментарии:
1. Верно, за исключением обратного — мобильное меню для маленьких экранов.