我之前已经多次询问过这个问题,但是没有任何建议的解决方案似乎适用于我的问题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
行,但之前曾经工作过,现在却没有,所以我不确定是什么了!
有什么想法吗? :)
答案 0 :(得分:6)
windowsize
变量的范围问题。你永远不会在调整大小时更新全局变量,而是更新一个局部变量然后让它被GC删除
var windowsize = $(window).width();
$(window).resize(function() {
windowsize = $(window).width();
});
它应该从未像你一样工作过(正确)。
答案 1 :(得分:0)
虽然第一个答案确实解决了问题。 Toggle不工作的原因(我发现这很奇怪,因为一切都是)是WordPress(我正在构建的平台)不喜欢在代码中使用$
。
我最初使用建议的jQuery(document).ready(function($) {
但是,一旦我将其更改为:(function($) {
并使用})(jQuery);
关闭它,一切正常!