У меня есть меню, которое должно выходить на мобильные устройства, когда я нажимаю кнопку, но я больше не работаю, так как я сделал это, чтобы меню и кнопка были добавлены через AJAX вместо непосредственно в разметке.Меню не сползает на кнопку
Вот код:
Проверьте текущий экран (окно на данный момент) размер и вызвать функцию, которая захватывает файлы:
var windowWidth = $(window).width(); //Will be screen.width later, using window for testing
if (windowWidth < 550) {
getPhpFile('mobilemenu', '#main-nav-container', 'insertAfter');
getPhpFile('mobmenuimg', '#main-nav-container', 'append');
}
Эта функция захватывает файлы и вызывает функцию, которая добавляет его в HTML в случае успеха:
function getPhpFile(filename, selector, method) {
$.ajax({
url : "includes/" + filename + ".php",
type: "POST",
success: function(data, textStatus, jqXHR) {
appendToHtml(data, selector, method);
},
error: function (jqXHR, textStatus, errorThrown){
console.log('Unable to get the requested files.');
}
});
}
Добавляет данные из захваченного файла в формате HTML:
function appendToHtml(data, selector, method) {
var element = $('' + selector + '');
switch (method) {
...
//Some removed cases here
...
case 'append': element.append(data);
break;
case 'insertAfter': $(data).insertAfter(element);
break;
}
}
Это то, что делает меню выскользнуть:
$('#mobile-nav-btn').on('click', function() {
if ($('#mobile-nav-container').is(':hidden')) {
$('#mobile-nav-container').stop().show().animate({left: 0}, 'slow');
}
else {
$('#mobile-nav-container').stop().animate({left: -150}, 'slow', function() {
$('#mobile-nav-container').hide();
});
}
});
я сузил свой поиск до того, что он не может найти #mobile-nav-btn
по некоторым причинам. Это потому, что скрипт работает, когда я использую что-то другое, кроме кнопки, чтобы вызвать функцию скольжения. Я нахожу это немного странным, хотя, поскольку кнопка и меню на самом деле находятся в разметке, когда я проверяю консоль, и я не запускаю сценарий до тех пор, пока разметка не появится, поскольку она запускается через событие click. Я попытался использовать window.onload = init
для скользящего скрипта, но ничего не сделал. Все включено в функцию $(document).ready
. Я действительно зациклился на том, как исправить это, чтобы все советы о том, что я должен делать?
Но не следует ли запускать функцию init после завершения загрузки окна, делает то же самое? Потому что тогда я связываю это событие, когда все остальное сделано. Это не имеет смысла для меня – Chrillewoodz
Ваша кнопка загружается асинхронно, нет? Все, что загружается после того, как факт не включен в document.ready или window.load –
Если вы поместите console.log в window.load, document.ready и обратный вызов вашего вызова ajax, вы увидите, что я имею в виду. –