I'm using some jQuery on a web page that detects which menu option is current, when to display the mobile menu, etc. - I'm pretty much just experimenting with what is possible at the minute. When I visit the page on a desktop PC, the code works fine, and my mobile menu and tabs load immediately when clicked.
When I view the page on a mobile device (S5, Android) the loading times for the menu to show, the tabs to change, etc. take a few seconds, as opposed to immediately. I'm not too sure whether this is down to the efficiency of my code, or if I shouldn't be using particular functions or anything. Any ideas on what could be causing this delay?
$(document).ready(function() {
function getParam(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var sortElement = currentSort(getParam('sort'));
var itemElement = currentItem(getParam('items'));
$(sortElement.element).addClass('current');
$(itemElement.element).addClass('current');
function currentSort(value) {
var strElement;
switch(value) {
case 'newest' :
strElement = '#newest';
break;
case 'oldest' :
strElement = '#oldest';
break;
case 'alph_desc' :
strElement = '#desc';
break;
case 'alph_asc' :
strElement = '#asc';
break;
case '' :
strElement = '#newest';
break;
} return {
element: strElement
}
}
function currentItem(value) {
var strElement;
switch(value) {
case '10' :
strElement = '#fewer';
break;
case '15' :
strElement = '#few';
break;
case '50' :
strElement = '#more';
break;
case '' :
strElement = '#few';
break;
} return {
element: strElement
}
}
$('#search a').click(function() {
$('#search').html('<form><input class="nav-search" placeholder="Search" type="text" name="search-query"/><input type="submit" value=" "/></form>');
});
function checkWidth() {
var windowSize = $(window).width();
if (windowSize < 1020) {
$('.navigation .container').html('<ul><li class="brand mobile"><a href="/products"></a></li><li class="menu"></li><div class="mobile-menu"><ul><li><a href="/products"><div class="icon product"></div>Products</a></li><!----><li><a href="/personalise"><div class="icon personalise"></div>Personalise</a></li><!----><li id="search"><a><div class="icon search"></div>Search</a></li><!----><li><a href="/basket"><div class="icon basket"></div>Basket</a></li></ul></div></ul>');
$('.mobile-menu').hide();
$('.menu').click(function() {
$('.mobile-menu').slideToggle();
});
} else {
$('.navigation .container').html('<ul><li><a href="/products"><div class="icon product"></div>Products</a></li><!----><li><a href="/personalise"><div class="icon personalise"></div>Personalise</a></li><!----><li class="brand"><a href="/products"></a></li><!----><li id="search"><a><div class="icon search"></div>Search</a></li><!----><li><a href="/basket"><div class="icon basket"></div>Basket</a></li></ul>');
}
}
checkWidth();
$(window).resize(checkWidth);
});