1

したがって、これは質問のタイトルのほとんどすべてです。 on() イベントハンドラー ( l​​ive() 動作用) をアタッチできる最も早いポイントは何ですか?

さらに詳しく..

私はready()イベントjqueryパターンを認識していますが、いくつかの(参照)によると、 live().

live()on()やや似た動作をする which を支持して現在は推奨されていません。

ただし、ドキュメントの解析の早い段階で使用できるように聞こえるlive()イベントを添付するために使用されます。$(document)

on()一方、通常は DOM のターゲットに少し近いものにイベントを関連付けて使用することをお勧めします。

したがって、コンテンツのほとんどが#mainセクション内にある場合は、アタッチハンドラー$('#main')の候補として適しています。on()

それを念頭に置いて、on()ハンドラーをアタッチするのはいつ安全ですか?

コンテナのタグが開いたらすぐですか?またはそれが閉じられたら?

これは信頼性が高く、一般的にブラウザ間で正しく動作しますか?

<html>
<!-- boring head stuff goes here (including loading jquery, obviously) -->
<body>

    <header>Stuff</header>

    <section id='main'>
        <script>
            $('#main').on('click','button.donkey', function() { alert ('you click the donkey');})
        </script>
        ...

        <button class="donkey">Donkey That!</button>
    </section>

    <footer>Other stuff</footer>

</body>
</html>
4

1 に答える 1

0

要素が dom にアタッチされるとすぐに、イベントをアタッチできます。がすべてのタイプのイベント アタッチメント (直接アタッチとデリゲート) を担当するようになったため.on()、子要素が宣言される前にイベントをアタッチするのではなく、#main一貫性を保つために最後にイベントをアタッチする必要があります。一般に、スクリプトをできるだけ遅く配置することが推奨されるため、次のようにします。

<section id='main'>
    ...
    <button class="donkey">Donkey That!</button>
</section>
<script>
    $('#main').on('click','button.donkey', function() { alert ('you click the donkey');})
</script>
于 2012-09-10T10:17:04.567 に答える