Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何多次调用函数?_Javascript_Jquery_Function_Anonymous Function - Fatal编程技术网

Javascript 如何多次调用函数?

Javascript 如何多次调用函数?,javascript,jquery,function,anonymous-function,Javascript,Jquery,Function,Anonymous Function,我的问题是:我正在开发一个移动友好网站,有两个样式表,一个用于“面向PC”的可视化,另一个用于移动可视化。除了2个CSS之外,我还需要一个函数,用于在从一种可视化模式切换到另一种模式时修改菜单上的一些href属性 我不会深入讨论这些东西的细节,因为它会很长,可能会很无聊,无论如何,我需要在$(document).ready和$(window).resize上调用该函数,也就是说每次调整窗口大小时都要调用该函数 因此,我声明了一个函数并将其命名为goToAnchor,以便能够多次调用它: $(do

我的问题是:我正在开发一个移动友好网站,有两个样式表,一个用于“面向PC”的可视化,另一个用于移动可视化。除了2个CSS之外,我还需要一个函数,用于在从一种可视化模式切换到另一种模式时修改菜单上的一些
href
属性

我不会深入讨论这些东西的细节,因为它会很长,可能会很无聊,无论如何,我需要在
$(document).ready
$(window).resize
上调用该函数,也就是说每次调整窗口大小时都要调用该函数

因此,我声明了一个函数并将其命名为
goToAnchor
,以便能够多次调用它:

$(document).ready(function() {
   function goToAnchor() {  ... modify some href attr ... }
   goToAnchor();
});
这很好,但正如我所说,我还需要在每次调整窗口大小时执行函数,因此我认为代码可能如下所示:

$(document).ready(function() {
   function goToAnchor() {  ... modify some href attr ... }
   goToAnchor();
   $(window).resize(goToAnchor());
});
问题很简单,函数不在
resize
上运行。我查看了jQuery文档,发现关于将函数链接到事件的每个示例都是这样写的:

$(window).resize(function() { ...do stuff...} );

不过,我不会使用匿名函数,因为我之前已经编写了该函数。我想做的事情非常简单:多次调用一个函数,而不用借助匿名函数来“复制”我的代码(毕竟,函数应该是这样工作的,对吧?)。

更改
$(窗口)。调整大小(goToAnchor())到<代码>$(窗口)。调整大小(goToAnchor)要替换的:
$(窗口)。调整大小(goToAnchor())
$(窗口)。调整大小(goToAnchor)

您的代码正在传递
goToAnchor
函数的响应,您要做的是传递对函数的引用,我们通过省略括号来实现

但你也可以这样做:

$(function() {
   $(window).bind('resize', function () { /*resize code*/ }).trigger('resize');
});

调整大小
事件在
窗口
对象以及
文档上触发时,这将有效地运行代码。ready
.trigger('resize')
使
调整大小
事件在
文档.ready
上触发)。

这是查看发生了什么的好方法,通过将函数的声明更改为:

var goToAnchor = function() { ... modify some href attr ... }
那么

$(window).resize(goToAnchor);


显然是在做同样的事情。

可能重复“传递
goToAnchor
函数的代码”?不完全是。它传递调用
goToAnchor
函数的结果。括号导致函数被执行。@Jasper谢谢你的回答,现在工作正常。顺便说一句,我昨晚读到了关于.trigger()的文章,我开始对它“感兴趣”,因此特别感谢您的回答。
$(window).resize(function() { ... modify some href attr ... });