2

重複の可能性:
スクリプトを初期化する

ページ(Page1.html)があり、このページには、別のページ(Page2#div1 / 2/3/4/5)の他のdivからコンテンツを取得するdiv(#div1)があります。コンテンツはjQueryロードスクリプトによってロードされます。コンテンツは選択ボックスでの選択に基づいて読み込まれるため、Page1の読み込みが完了した後にコンテンツが読み込まれます。

問題: jQueryに依存するPage2からコンテンツを取得すると、これらの要素が機能しません。それらは実行されません。

私の質問: Page2からロードされた#div全体(すべてのコンテンツ)をロードされたときに実行する方法はありますか?現在、既存の要素はロードされるときに「初期化」されます。例:function initializeSlider(){slider};。

今、私はjQueryに応じてさらにいくつかの要素を追加しようとしていますが、すべてのオブジェクトを初期化することがこれらすべてのスクリプトを実行する正しい方法である場合、またはすべてのjQuery要素を一度に実行する方法があるので、すべてを初期化する必要はありません。オブジェクトを1つずつ?

1つのスクリプトの実行または初期化: divがロードされたときにすべてのスクリプトを一度に実行/初期化する方法がない場合。このスクリプトを実行または初期化しようとして成功しませんでした。両方の "$(document).ready( function(){"そしてスライダーと同様に初期化しますが、要素は実行されていません。

$(document).ready(function() {
    $(".lil").click(function () {
      $(this).toggleClass("highlight");
    });
});
4

3 に答える 3

4

初期化する内容によって異なります。イベントの場合は、必ず使用して.on()ください:

$("#div1").on('click', '.lil', function () {
    $(this).toggleClass("highlight");
});
于 2012-12-21T14:34:42.403 に答える
2

使用する:

$(document).ready(function() {
    $("#div1").on('click', '.lil', function () {
      $(this).toggleClass("highlight");
    });
});
于 2012-12-21T14:35:07.653 に答える
0

その関数に名前を付けることができます。何かのようなもの:

function toggleClasses(classToToggle) {
    $(classToToggle).click(function () {
        $(this).toggleClass("highlight");
    });
}

次に、メインページは次のようになります。

$(document).ready(function() {
    toggleClasses('.lil');
});

そして、2ページからロードする部分ビューの下部に、次を追加します。

<script>
    toggleClasses('.partialViewClass');
</script>

そうすれば、その部分ビューの読み込みが完了するとすぐに、同じ関数が呼び出されます。

そのクラスを切り替えるだけの場合は、セカンダリクラスのパラメータを追加して、部分ビューの要素を元のページの要素と区別することをお勧めします。そうすれば、元のページの要素は取得されません。部分ビューが読み込まれると元に戻ります。

したがって、部分ビューにあるものには、ハイライトクラスとその2次微分クラス(class = "lil partialViewClass")が必要になります。クラスをパラメーターとして関数に渡して、各クラスが必要なものだけを切り替えるようにします。

于 2012-12-21T14:40:43.830 に答える