【问题标题】:What's the difference between using jQuery's onclick and the onclick attribute?使用 jQuery 的 onclick 和 onclick 属性有什么区别?
【发布时间】:2011-01-12 23:07:18
【问题描述】:

以下两段 HTML 有什么区别(如果我在徒手输入时有任何拼写错误,敬请见谅)?

使用 jQuery:

<script type="text/javascript">
    $(document).ready(function() {
        $("#clickme").click(function() {
            alert("clicked!");
        });
    });
</script>

<a id="clickme" href="javascript:void(0);">click me</a>

不使用 jQuery:

<a id="clickme" href="javascript:void(0);" onclick="alert('clicked!');">click me</a>

【问题讨论】:

  • 请注意:您永远不应该将 JavaScript 代码放在 href 属性中。它创建的链接在不支持 JavaScript 的浏览器上什么都不做,并且打破了渐进增强(或优雅降级,如果你愿意的话)的想法。
  • @Joseph Earl 是的,但是放置 javascript:void(0) 的重点是它应该什么都不做。在本例中,onclick 事件是通过 jQuery 处理的。

标签: jquery


【解决方案1】:

一个很大的区别是 jQuery 的事件是在一个注册表中处理的,该注册表在单击事件上进行解析。至关重要的是,这意味着您可以分配多个回调,并按照它们注册的顺序触发它们:

<script type="text/javascript">
    $(document).ready(function() {
        $("#clickme").click(function() {
            alert("clicked!");
        });
        $("#clickme").click(function() {
            alert("I concur, clicked!");
        });
    });
</script>

它们都将在click 事件中按顺序被调用。 “真实的”onClick 事件被 jQuery 的注册表驱动系统覆盖。在 vanilla 文档结构中,没有像 jQuery 这样的系统,只能有一个 onClick 事件。

【讨论】:

  • +1。不错的答案。事件规范化(我认为 jQuery 会这样做)是另一个区别。
【解决方案2】:

它也是 UI 代码(HTML)和逻辑代码(JavaScript)的更清晰的分离。它使每个阅读都更容易。

【讨论】:

    【解决方案3】:

    其中一个区别是使用 jQuery 的 click 添加处理程序不会删除以前的处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多