1

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

上下文:我对该页面有一些“提示”(div.tips)。在移动设备上,我希望用户能够单击一个名为 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在线路上,但这以前可以工作,现在不行,所以我不确定是怎么回事!

有任何想法吗?:)

4

2 回答 2

6

windowsize关于变量的范围界定问题。您永远不会在调整大小时更新全局变量,而是更新本地变量然后让它被 GC 丢弃

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

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

它不应该像你拥有它那样(正确地)工作。

于 2013-04-26T15:22:18.337 回答
0

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

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

但是,一旦我将其更改为:(function($) {并在一切正常的情况下将其关闭})(jQuery);

于 2013-04-26T16:00:42.783 回答