我正在开发一个响应式设计,并且当菜单小于540px(用于移动设备)时,它会改变菜单的功能。它确实发生了变化,但我无法点击按钮,我的猜测是因为函数内部的功能。
这是不起作用的部分:
$('.menuknop').click(function(){
$(".menu").slideToggle();
});
完整代码:
checkWidth(){
var windowSize = $(window).width();
if (windowSize < 540) {
$(".menu").hide();
$(".menuknop").show();
$('.menuknop').click(function(){
$(".menu").slideToggle();
});
}
else {
$(".menuknop").hide();
$(".menu").show();
}
}
//Execute function
checkWidth();
$(window).resize(checkWidth);
答案 0 :(得分:1)
目前尚不清楚“无法点击按钮”意味着什么,但您的代码至少有一个问题:每个resize
事件将宽度置于540px以下会为{{1}附加一个额外的处理程序click
的事件。
在玩窗口时,你可以很容易地得到数百个相同的处理程序,点击元素会导致混乱。
您可以通过重新编写逻辑来解决此问题:
.menuknop
答案 1 :(得分:0)
您可以像这样定义点击处理程序 -
var windowSize = 0;
checkWidth() {
windowSize = $(window).width();
if (windowSize < 540) {
$(".menu").hide();
$(".menuknop").show();
} else {
$(".menuknop").hide();
$(".menu").show();
}
}
//Execute function
checkWidth();
$(window).resize(checkWidth);
$('.menuknop').click(function () {
if (windowSize < 540) {
$(".menu").slideToggle();
}
});
答案 2 :(得分:0)
这是你想要的吗?
$('.menuknop').click(function(){
$(".menu").slideToggle();
});
function checkWidth(){
var windowSize = $(window).width();
if (windowSize < 540) {
$(".menu").hide();
$(".menuknop").show();
}
else {
$(".menuknop").hide();
$(".menu").show();
}
}
$(window).resize(checkWidth);