Javascript jQuery:分号放在哪里?

Javascript jQuery:分号放在哪里?,javascript,jquery,Javascript,Jquery,我学习jQuery主要是通过学习别人的代码 我找到了这个脚本 我做了一些修改,所以得到了以下代码: $(document).ready(function() { $('nav li a').click(function() { var toLoad = $(this).attr('href')+' article'; $('article').fadeOut('slow',loadContent); function loadC

我学习jQuery主要是通过学习别人的代码

我找到了这个脚本

我做了一些修改,所以得到了以下代码:

$(document).ready(function() {
    $('nav li a').click(function() {

        var toLoad = $(this).attr('href')+' article';
            $('article').fadeOut('slow',loadContent);

        function loadContent() {
            $('article').load(toLoad,'',showNewContent())
        }

        function showNewContent() {
            $('article').fadeIn('slow');
        }

        return false;
    });
});
在经历了许多问题之后,当我在“showNewContent())”后面加上分号时,我注意到整个事情都不起作用了。为什么会这样


我的第二个问题是,为什么他只以“loadContent”启动函数“loadContent”,而以“showNewContent()”(带括号)启动函数“showNewContent”?

这是一个错误。这条线应该是:

$('article').load(toLoad, '', showNewContent);
顺便说一下,您不需要传递第二个参数。改用这个:

$('article').load(toLoad, showNewContent);

这是个错误。这条线应该是:

$('article').load(toLoad, '', showNewContent);
顺便说一下,您不需要传递第二个参数。改用这个:

$('article').load(toLoad, showNewContent);

您需要在语句后包含分号。因此:

$('article').load(toLoad,'',showNewContent())
应该是

$('article').load(toLoad,'',showNewContent());
在声明函数之后,您不需要它们,尽管如果它们不在那里,它不会破坏任何东西


至于showNewContent和showNewContent()之间的区别,前面的函数将函数传递给load事件。后者将函数的结果(在本例中,showNewContent没有返回,因此返回null)传递给load事件。如果希望函数在加载时运行,则将使用showNewContent版本。

您将希望在语句后包含分号。因此:

$('article').load(toLoad,'',showNewContent())
应该是

$('article').load(toLoad,'',showNewContent());
在声明函数之后,您不需要它们,尽管如果它们不在那里,它不会破坏任何东西


至于showNewContent和showNewContent()之间的区别,前面的函数将函数传递给load事件。后者将函数的结果(在本例中,showNewContent没有返回,因此返回null)传递给load事件。如果希望函数在加载时运行,则将使用showNewContent版本。

回答您的问题:

1) 行末尾的分号

$('article').load(toLoad,'',showNewContent())
不应影响正在呈现的代码。当你说它不起作用时,你是什么意思

2) 两个调用之间的区别在于,他提供一个函数作为要调用的委托,而另一个函数实际执行该函数并将其值返回给调用方。代码似乎是错的;该参数应该是要执行的回调,而不是值本身

 // This is a reference to the method. IE, this would be valid code:
 var someMethod = loadContent;
 someMethod();

 var someResult = showNewContent();
 // someResult in this case is 'undefined', not a reference to a function.
上面的代码可以这样重写:

$(document).ready(function()
{
     $('nav li a').click(function()
     {
          var toLoad = $(this).attr('href') + ' article';

          $('article').fadeOut('slow', function()
          {
              $('article').load(toLoad,  '', function()
              {
                    $('article').fadeIn('slow');
              });
          });
     });
});

您放置带有名称的内联函数的示例可能会混淆这个问题

要回答您的问题:

1) 行末尾的分号

$('article').load(toLoad,'',showNewContent())
不应影响正在呈现的代码。当你说它不起作用时,你是什么意思

2) 两个调用之间的区别在于,他提供一个函数作为要调用的委托,而另一个函数实际执行该函数并将其值返回给调用方。代码似乎是错的;该参数应该是要执行的回调,而不是值本身

 // This is a reference to the method. IE, this would be valid code:
 var someMethod = loadContent;
 someMethod();

 var someResult = showNewContent();
 // someResult in this case is 'undefined', not a reference to a function.
上面的代码可以这样重写:

$(document).ready(function()
{
     $('nav li a').click(function()
     {
          var toLoad = $(this).attr('href') + ' article';

          $('article').fadeOut('slow', function()
          {
              $('article').load(toLoad,  '', function()
              {
                    $('article').fadeIn('slow');
              });
          });
     });
});

您放置带有名称的内联函数的示例可能会混淆这个问题

问题来自无效语法,请参见@Joseph的答案。您遇到的问题是您对如何使用函数的理解(您的第二个问题)

JavaScript中的函数可以像任何其他值一样分配给变量。传递showNewContent(无括号)实际上是传递一个变量。load和fadeOut方法将查看您传递给它们的变量并执行它。下面是一个简单的JavaScript示例,我们将一个函数传递给另一个函数

var myFuncToPass = function () { alert('hi'); };
doStuff(myFuncToPass);

function doStuff(func)
{
  func();  // will do an alert
}

希望这能有所帮助。

问题来自无效语法,请参见@Joseph的答案。您遇到的问题是您对如何使用函数的理解(您的第二个问题)

JavaScript中的函数可以像任何其他值一样分配给变量。传递showNewContent(无括号)实际上是传递一个变量。load和fadeOut方法将查看您传递给它们的变量并执行它。下面是一个简单的JavaScript示例,我们将一个函数传递给另一个函数

var myFuncToPass = function () { alert('hi'); };
doStuff(myFuncToPass);

function doStuff(func)
{
  func();  // will do an alert
}

希望有帮助。

分号用于换行符。您对放置的每个分号执行一个命令。我想jQuery在这方面有点让人困惑,因为你可以把东西链接在一起。我是写这个问题的人。首先感谢每一位试图帮助我们的人。我想我的问题是我的浏览器缓存,它似乎需要删除。再次感谢你!分号表示换行符。您对放置的每个分号执行一个命令。我想jQuery在这方面有点让人困惑,因为你可以把东西链接在一起。我是写这个问题的人。首先感谢每一位试图帮助我们的人。我想我的问题是我的浏览器缓存,它似乎需要删除。再次感谢你!啊,谢谢你。顺便问一下,你知道“”的用途吗?@Fart:看看。基本上,有3个参数可以传递给
.load
:URL、数据和回调。因为他没有要发送的数据,所以他传入了一个空字符串。然而,如上所述,这是没有必要的。如果您查看jQuery文档,您会发现这些参数是可选的,可以省略。啊,谢谢。顺便问一下,你知道“”的用途吗?@Fart:看看。基本上,有3个参数可以传递给
.load
:URL、数据和回调。因为他没有要发送的数据,所以他传入了一个空字符串。然而,如上所述,这是没有必要的。如果您查看jQuery文档,就会发现这些参数是可选的,可以简单地省略。