我有一个自适应的wordpress主题。当屏幕尺寸低于740时,菜单被编码为隐藏。但是它仅在主页上正确地执行此操作。如果我转到任何其他页面菜单崩溃但它无法隐藏我收到此错误:“未捕获TypeError:无法读取属性'clientWidth'为null”
这是代码,我在主题的header.php文件中调用它:
var ww = document.body.clientWidth;
$(document).ready(function() {
adjustMenu();
$(".cat").click(function(e) { // cat class
e.preventDefault();
$(this).toggleClass("active");
$(".sf-menu").toggle();
});
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = document.body.clientWidth;
adjustMenu();
});
答案 0 :(得分:7)
尝试在文档末尾添加脚本。 原因是,文档宽度的开头为零,因为您的内容尚未加载,因此无需显示任何内容,因此宽度为零
答案 1 :(得分:6)
我想说从jquery使用$(window).width();
。它返回浏览器视口的宽度,这相当于或者我会说传统javascript的更好的选择。
您的代码看起来像这样。检查它是否有效。
var ww = $(window).width();
$(document).ready(function() {
adjustMenu();
$(".cat").click(function(e) { // cat class
e.preventDefault();
$(this).toggleClass("active");
$(".sf-menu").toggle();
});
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = document.body.clientWidth;
adjustMenu();
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = $(window).width();
adjustMenu();
});