5

私は$.click()いくつかのイベントをトリガーするためのメソッドを使用していました。しかし、要素が宣言される前に、いくつかのHTML要素にいくつかのイベントを設定する必要がありました。これを例として取り上げましょう。

<script>
    $('div.hide').click(function() {
        $('div.hide').css({'display' : 'none'});
     });
</script>
<div class="hide">some text</div>

欠点は、.click()メソッドを設定するときにdiv.hide要素が存在しないため、トリガーが設定されないことです。

だから私はその.on()ように方法に目を向けました:

<script>
    $('div.hide').on('click', function() {
        $('div.hide').css({'display' : 'none'});
    });
</script>
<div class="hide">some text</div>

しかし、これも機能しません。.on()呼び出すと、すべての既存の要素と将来のdiv.hide要素がトリガーされると思いました'click' function()

私はなんとかこの不便を乗り越えることができましたが、私自身の知識のために、私は何が間違っていたのか知​​りたいです。将来のHTML要素にトリガーを割り当てる方法はありませんか?

私の孤独は:

<script>
    $(document).ready( function() {
        $('div.hide').click(function() {
            $('div.hide').css({'display' : 'none'});
        });
    });
</script>
<div class="hide">some text</div>
4

2 に答える 2

10

引数が 3 つのバージョンを見逃しました:

$('body').on('click', 'div.hide', function() { ... });

これによりハンドラーが配置されます<body>が、バブリングするイベントをキャッチし、ターゲット要素がセレクター (2 番目の引数) と一致したときにハンドラーを呼び出します。

<body>ハンドラーは;に行く必要はありません。の任意の親コンテナ要素にすることができます<div>

「on」メソッドは、古い「live」メソッドと「delegate」メソッド、および「bind」自体を置き換えます。

于 2012-06-11T15:35:57.653 に答える
-2

jQuery.live メソッドを使用して、現在および将来の現在のセレクターに一致するすべての要素のイベント ハンドラーをアタッチします。

于 2012-06-11T15:53:31.840 に答える