jQuery Toggle();工作,现在没有

时间:2013-04-26 15:19:46

标签: jquery responsive-design toggle

我之前已经多次询问过这个问题,但是没有任何建议的解决方案似乎适用于我的问题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行,但之前曾经工作过,现在却没有,所以我不确定是什么了!

有什么想法吗? :)

2 个答案:

答案 0 :(得分:6)

windowsize变量的范围问题。你永远不会在调整大小时更新全局变量,而是更新一个局部变量然后让它被GC删除

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

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

它应该从未像你一样工作过(正确)。

答案 1 :(得分:0)

虽然第一个答案确实解决了问题。 Toggle不工作的原因(我发现这很奇怪,因为一切都是)是WordPress(我正在构建的平台)不喜欢在代码中使用$

我最初使用建议的jQuery(document).ready(function($) {

修复此问题

但是,一旦我将其更改为:(function($) {并使用})(jQuery);关闭它,一切正常!