1

代码 1

$(document).ready(function() {
    $('.poem-stanza').addClass('highlight');
});

代码 2

$(document).ready(
    $('.poem-stanza').addClass('highlight');
);
4

5 回答 5

3

您阅读了您正在调用的ready方法(本例中的方法)的文档,并查看它期望的值类型。

如果它需要一个函数,请使用您的第一个示例。

如果它需要一个 jQuery* 对象,请使用您的第二个示例(因为 addClass 方法的返回值是一个 jQuery 对象)。

*我假设您使用的是 jQuery,因为我认为它是唯一具有这样命名的函数的库。不过我可能是错的,$ 是一个愚蠢的函数名称

于 2009-07-11T11:10:24.207 回答
0

如果函数接受一个函数作为参数,代码 2 将不起作用,因为

$('.poem-stanza').addClass('highlight');

不是函数定义(它是一个语句)

要创建表示函数的对象,应使用以下语法之一:

function myFunc() {
}

或者

var myFunc = function() {
}

或者

var myFunc = new Function("...javascript code...");

在上述定义之一之后,myFunc将持有一个表示函数的对象。

于 2009-07-11T11:11:15.563 回答
0

呵呵,原来是这样:D

不,说真的,当你必须在 ready() 中做某事时;或类似的方法,你使用一个。功能。其他方法接受参数。文档将为您提供详细信息。

于 2009-07-11T11:11:50.850 回答
0

就像其他人说的那样,您必须查看文档以查看函数接受的参数类型。然而,这里重要的部分是:如果你有一个语句,它会在解释器遇到它时执行。如果您定义一个函数并将其传递给就绪函数,则就绪函数决定何时执行它。在这种特殊情况下,当文档准备好时。另一个示例是 setTimeout,它需要一个函数和毫秒数作为参数。

规则是这样的:当你想将一些代码传递给其他函数时,你必须将它包装在一个函数中。如果您使用(未包装的)语句,它将被执行并将结果传递给函数。

于 2009-07-11T11:23:02.950 回答
0

如果需要回调函数,请使用 function 关键字。当您使用和之类的方法时readyclick您不希望代码在设置事件时运行,而是在事件发生时运行,因此您需要一个回调函数。

使用匿名函数就像使用您之前定义的命名函数一样。在这样的示例中,更容易理解正在发生的事情:

function onReady() {
    $('.poem-stanza').addClass('highlight');
}

$(document).ready(onReady);
于 2009-07-11T11:29:04.170 回答