0

そのため、ウィンドウ サイズに基づいて div をデタッチして appendTo しようとしています。以下は私が現在持っているものです。

変数 SOCIALBAR を #SOCIALMEDIA に割り当ててデタッチする関数を作成しています。次に、(document).ready と (window).resize のウィンドウ サイズに基づいて、SOCIALBARPlACEMENT 関数を呼び出し、#SOCIALMEDIA を #TOP または #LEFT div に追加します。

これは (document).ready では問題なく機能しますが、(window).resize では機能しません。

実際、document.ready を削除して window.resize を残すと、関数はページの読み込み時に実行されますが、ページのサイズ変更では機能しません。

任意の考えをいただければ幸いです。感謝!

function socialbarplacement() {
    var socialbar;
    socialbar = $("#socialmedia").detach();
    if (jQuery(window).width() < 1384) {
        socialbar.appendTo("#top");
    } else {
        socialbar.appendTo("#left");
    }
};
$(document).ready(socialbarplacement());
$(window).resize(socialbarplacement());
4

3 に答える 3

1

関数をイベントハンドラーとして渡すのではなく、すぐに呼び出しています。試してください:

$(document).ready(socialbarplacement);
$(window).resize(socialbarplacement);
/*
someFunction() <-- invokes the function and resolves to the returned value
someFunction <-- resolves to the function reference
*/
于 2012-07-24T18:28:53.583 に答える
0

私はおそらくこれらの行に沿って何かをするでしょう(テストされていないコード):

$(window).resize( function(){
    var wnd = $(window), soc = $('#socialmedia');
    return function(){
        // might add a check to make sure you are not appending to the current parent.
        soc.appendTo( $(window).width() > 1384 ? '#left' : '#top');
    }
});

ページが読み込まれるとサイズ変更が開始されるため、準備とサイズ変更の両方を行う必要はありません。また、それを見ると、本当に名前で渡す必要があるときにメソッドを実行しています。

于 2012-07-24T18:36:44.463 に答える