【问题标题】:Why nest jQuery calls within a function? [duplicate]为什么要在函数中嵌套 jQuery 调用? [复制]
【发布时间】:2016-10-09 21:49:32
【问题描述】:

两者有什么区别(如果有的话):

$(document).ready(function() {
    $(function() {
        $("#selector").doSomething();
    });
});

和:

$(document).ready(function() {
    $("#selector").doSomething();
});

我问是因为我通常会使用第二段代码,但 jQuery Mobile 网站以第一段代码为例。

【问题讨论】:

  • 如果他们能摆脱.click等人,那就太好了。
  • @seahorsepip 1. 这里没有插件,只有准备好的文档处理程序,2. 也没有使用任何变量
  • @Alnitak .click 有什么问题?这是.on("click") 的一个很好的简写,在大多数情况下,它只需要用于多个事件和/或事件委托。
  • @seahorsepip 因为它也被重载作为触发点击事件的手段。恕我直言,应该有 一个 方法来注册事件 (.on) 并且只有 一个 来触发它们 (.trigger)
  • @Alnitak jQuery 是一种有自己标准的语言,它们可能与纯 javascript 编码标准不同,但这就是为什么它首先是一个框架,创建自己的编码标准没有错,只要它是保持一致,它是(.click.submit 等)。

标签: javascript jquery


【解决方案1】:

所有$(function() { ... }) 都是$(document).ready(function() { ... }) 的简写,没有必要像在您的第一个代码sn-p 中那样使用它们,而且是多余的。

【讨论】:

    【解决方案2】:

    根据jQuery documentation here

    .ready() 方法通常与匿名函数一起使用:

    $( document ).ready(function() {
      // Handler for .ready() called.
    });
    

    相当于推荐的调用方式

    $(function() {
      // Handler for .ready() called.
    });
    

    【讨论】:

      【解决方案3】:
      $(document).ready(function() {
          $(function() {
              var a = 5;
          });
          alert(a); //Outputs an is undefined error
      });
      

      对比:

      $(document).ready(function() {
          var a = 5;
          alert(a); //Shows an alert with the number 5
      });
      

      在第一个代码示例中,aundefined,因为它在不同的范围内,在第二个代码示例中,a5,因为它在同一个范围内。

      OP 中的两个示例具有 相同的结果,但在定义的范围内不同,这导致上述示例的结果不同,但在其他情况下(如 OP),结果相同,具体取决于代码在范围内。

      【讨论】:

      • 这与问题有什么关系?
      • @Alnitak 这是相关的,因为.doSomething 可能会在任一范围内引用一个变量,所问的问题是关于 NOBODY 回答的两个示例之间的区别,相反,每个人都说它们是相同的,只是不同的表示法是错误的。
      • 不,.doSomething 显然是一个 jQuery 插件方法,而不是任何“范围内的变量”。
      • @Alnitak 你知道.doSomething 做什么吗?除了不可否认的事实之外,示例中的范围存在差异。他询问代码示例的差异,我(正确地)回答范围存在差异,而不是(错误地)两个示例相同。相同的结果不等于相同的代码。
      • @seahorsepip:我没有看到任何迹象表明 OP 对范围感到困惑。还有其他差异,但没有人触及它们,因为这超出了问题的重点。如果您建议这将是一种创建新变量范围的方法,那么当然可以,但是为什么要为此使用“就绪”回调呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2021-06-06
      • 2021-12-31
      • 2023-04-01
      • 2012-02-23
      • 2013-11-23
      相关资源
      最近更新 更多