我可以看到这个问题已经被问过很多次了,但是对于我的Toggle()问题,似乎没有建议的解决方案。

上下文:我在该页面上有一些“提示”(div.tips)。在移动设备上,我希望用户能够单击名为“提示(button.tips)”的按钮,并在该按钮下弹出内容。然后,他们可以单击按钮,内容将再次消失。

我在网站的移动版本上使用Toggle,使用以下两行获取窗口的宽度:

var windowsize = $(window).width();

$(window).resize(function() {
    var windowsize = $(window).width();
});


因此,我有两个实例需要在移动站点中移动内容,因此我使用appendTo()完成此操作。这是问题代码1:

$("div.results").hide();

$("div.result-summary").click(function () {
        $("div.result-summary").hasClass("active-result");
        $("div.result-summary").removeClass("active-result");

        $(this).toggleClass("active-result");

        if (windowsize < 1015) {
            $("div.results").appendTo(this);
            $("div.results").toggle();
        } else {
            $("div.results").show();
        }
});


第一部分工作正常,因此正在加载jQuery。 if (windowsize < 1015) {部分完全不会引起浏览器的反应。另外,我在控制台中没有错误。

问题代码2几乎相同:

if (windowsize < 1015) {
        $("div.tips").hide();
                    $("div.tips").appendTo("div.append");

        $('button.tips').click(function(){
            $("div.tips").toggle();
        });
}


同样,在浏览器中什么也没有发生,并且没有控制台错误。

我感觉到问题出在windowsize < 1015行,但是该行以前曾经起作用,现在却没有,所以我不确定是怎么回事!

有任何想法吗? :)

最佳答案

windowsize变量的作用域问题。您永远不会在调整大小时更新全局变量,而是在更新本地变量,然后让它被GC丢弃

var windowsize = $(window).width();

$(window).resize(function() {
    windowsize = $(window).width();
});


它应该永远不会像您拥有的那样(正确地)工作。

10-06 07:30