1

この質問は以前に何度も出されていることがわかりますが、Toggle(); に関する私の問題に対して解決策が提案されていないようです。

コンテキスト: そのページに関する「ヒント」があります ( div.tips)。モバイル デバイスで、ユーザーがヒント ( button.tips) というボタンをクリックすると、ボタンの下にコンテンツがポップアップ表示されるようにしたいと考えています。その後、ボタンをクリックすると、コンテンツが再び消えます。

サイトのモバイル バージョンで Toggle を使用しています。次の 2 行を使用してウィンドウの幅を取得しています。

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

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

そのため、モバイル サイト用に移動する必要があるインスタンスが 2 つあるため、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 に答える