1

私が抱えている問題は、このフィドルに表示されます。

http://jsfiddle.net/mjmitche/Sy2G4/

ドキュメントの作成後に新しい段落が作成された場合でも、jQuery delegate() を使用して、同じクリック イベントに応答する段落を作成しています。デリゲートが on() に置き換えられたことは知っていますが、on() にその機能があるとは思いません。とにかく、デリゲートを思い通りに動作させることさえできません。フィドルでわかるように、新しい段落はクリックに反応しません。

私が間違っていることを説明できますか?

    $(document).ready(function(){

        $('p').delegate(this, 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
        });

    });​


<p>click me!</p>​
4

4 に答える 4

2

jQueryonは委任で機能します。

$('.mywrapper').on('click', 'p', function(){
   $(this).after('<p>No, click me!</p>'); 
});​

HTML

<div class="mywrapper">
    <p>Click me!</p>
</div>​

コンテナ要素(ぶらぶらするもの)を選択し、段落タグ(現在および将来)からトリガーするように指示します。

JSFiddleの例

于 2012-09-08T00:19:53.987 に答える
1

クリックハンドラーをに誤って委任していますp。代わりに、コードは次のようになります。

$('body').delegate('p', 'click', function(){/*your click handler*/});

違いは、リスナーがに接続され、それまで伝播するクリックイベントがセレクターの適格body性に対して検証されてから、コールバックが実行されることです。p

いじる

于 2012-09-08T00:18:28.927 に答える
0

代わりにこれを試してください:

$(document).ready(function(){

    $('body').delegate('p', 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
    });
});​
于 2012-09-08T00:17:58.643 に答える
0

これを試して

$(document).ready(function(){
    $('body').delegate('p', 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
    });
});​

デモ

于 2012-09-08T00:19:40.153 に答える