1

.load() を使用して div に新しいコンテンツを入力していますが、新しいコンテンツ内でスクリプトを使用するには、すべてのスクリプトを思い出す必要があります。

私はそれについて間違っていますか?そうでない場合、代替方法はありますか?

    $('.user').click(function(){
    if ($section !== 'users'){
        $section = 'users';
        $('div#contentWrapper').fadeOut(0).empty();
        $('div#contentWrapper').load('pages/users.html').fadeIn(500);
    }
    else{
        return;
    }

これは明らかに 2 回起動するコードです。

    $('.addUser').click(function(){        
    $('.userPanel').fadeOut(0).empty();
    $('.userPanel').load('pages/addUser.html').fadeIn(500);
    });

最初はフェードアウトが原因だと思っていたので、インスタントに設定しましたが、問題は解決しませんでした。サイトの別の投稿では、最初にクリック ハンドラーのバインドを解除することを推奨していましたが、私が理解しているように、これは修正ではなく回避策であり、むしろ問題を修正します。

私はjqueryが初めてで、皆さんが提供できる助けを本当に感謝しています.

4

1 に答える 1

0

要素を動的にロードする場合、jQuery の.on()関数を使用して、ロードされる要素にイベントをバインドする必要があります。DOM に既に存在する要素にバインドする必要があり.on()、通常、その最悪のシナリオは body 要素です。通常よりも具体的にすると、bodyパフォーマンスが向上します。

たとえば、テーブルの行をテーブルにロードし、クリック イベントを新しい行にバインドする場合は、次のようにします。

$("table").on("click", "tr", function(event){
    //do something
});
于 2012-09-14T02:33:18.807 に答える