0

そのため、ページ (テーブル) にいくつかのデータがあり、他の場所のいくつかのオプションに基づいて、サーバーから ajax がリロードされる可能性があります。このテーブルにはボタンがあり、クリックすると、テーブル内のレコードに他の処理を実行できます。

私はこれに気付きました... http://api.jquery.com/on/ ...単純なイベントハンドラーを要素にアタッチするための推奨されるアプローチですが、それは現在存在する要素にのみアタッチされ、ajaxを実行すると添付されたハンドラーを失います。

だから私はこれを使い始めました... http://api.jquery.com/live/ ...そして何を推測すると、jqueryチームはいつものことをして、「on」を使うべきだと言って非推奨にしました。

これらの関数は非常に異なる動作をしますが、jquery のドキュメントでは、それらを交互に使用する必要があると言われています...

誰かがこれに相当する「オン」と、以前にアタッチされていた要素を置き換えるajax呼び出しの後に要素を操作する方法を説明できますか...

 $("some selector").live('click', function (e) {
            // some code code
            e.preventDefault();
            return false;
        });

私の理解では、あなたは次のようなことをするでしょう...

 $("some selector").on('click', function (e) {
            // some code code
            e.preventDefault();
            return false;
        });

私の推測では、これをある種の「initClicks」関数に入れて、ページの読み込み時とajax呼び出しの両方で呼び出して、ajax呼び出しを実行した後、このコードを再実行する必要があると思います。

これは私には少し後退しているようです...または、ここで何かを見逃しましたか?

4

5 に答える 5

3

要素は動的に追加されるため、イベント デリゲーションを使用してイベント ハンドラーを登録する必要があります。

// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', 'some selector', function(event) {
    // some code code
    e.preventDefault();
    return false; 
});

また、e.preventDefault()またはreturn falseを次のように使用します。

return false = e.preventDefault() + e.stopPropagation()

したがって、両方を同時に使用する必要はありません。

于 2013-11-01T10:36:20.470 に答える
0

上記に相当するものlive

$(document).on('click', "some selector", function (e) {
    // some code code
    e.preventDefault();
    return false;
});

on()は、すべてのイベント ハンドラー形式のシングル ストップです。使用したモデルは、

$("some selector").click(function (e) {
    // some code code
    e.preventDefault();
    return false;
});

これは、作業ベースのイベント委任を行います。

于 2013-11-01T10:35:02.793 に答える