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