我可以看到这个问题已经被问过很多次了,但是对于我的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();
});
它应该永远不会像您拥有的那样(正确地)工作。