1

所以这几乎是问题标题中的全部内容,您可以附加 on() 事件处理程序(用于 live() 行为)的最早点是什么?

进一步详细..

我知道ready()事件 jquery 模式,但根据一些(参考),如果您使用诸如live().

live()现在已弃用,而赞成使用on()类似的行为。

然而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 回答