Tag: 匿名函数

jQuery:重写匿名回调到命名函数

如果我这样做: $(‘h1’).slideUp(‘slow’, function() { $(‘div:first’).fadeOut(); }); h1将向上滑动,然后第一个div将淡出。 但是,如果我这样做: function last() { $(‘div:first’).fadeOut(); } $(‘h1’).slideUp(‘slow’, last()); h1会向上滑动,div会同时淡出! 如何使我的第二个示例与第一个示例相同,其中fadeOut()被称为AFTER slideUp()?

带延迟的jQuery toggle类只能运行一次

在jQuery,匿名函数和延迟方面,我显然缺少一些基本的东西。 以下代码仅适用于每页加载ONCE(它将添加该类,然后在1秒后删除它,如果我再次单击,它将添加该类,但绝不会在页面持续时间内删除该类,除非我重新加载页面): var jElement = $(currElem); jElement.addClass(“highlight”) .delay(1000) .queue(function(){ $(this).removeClass(“highlight”); }); 然而, 如果我将(非existant)函数调用作为参数添加,并且我在我的匿名函数中调用它,那么add / remove类组合将无限期地工作。 var jElement = $(currElem); jElement.addClass(“highlight”) .delay(1000) .queue(function(randomFunction){ $(this).removeClass(“highlight”); randomFunction(); //this makes it seemingly ‘miraculously’ work?? }); 边注: var jElement = $(currElem); jElement.addClass(“highlight”) .delay(1000) .queue(function(randomFunction){ $(this).removeClass(“highlight”); // this does NOT work; if I dont actually call the ‘randomFunction’ // so that […]

用命名函数替换匿名函数(在jQuery中)

我的原始(工作)代码如下所示: jQuery().ready(function ($) { $(‘[id=”errorMessages”]’).ajaxStart(function () { $(this).html(“”); }); $(‘[id=”errorMessages”]’).ajaxError(function (e, jqxhr, settings, exception) { //… }); }); 当我试图将匿名函数替换为命名函数时,调用如下:(我正在为某些需求做POC,期望这样的实现。) function fs() { $(this).html(“”); } function fe(e, jqxhr, settings, exception) { //… } jQuery().ready(function ($) { $(‘[id=”errorMessages”]’).ajaxStart(fs()); $(‘[id=”errorMessages”]’).ajaxError(fe(e, jqxhr, settings, exception)); }); 我收到一个错误,指出参数’e’未定义。 但没有参数的函数似乎工作正常。 我想知道匿名函数如何接收参数,而调用外部函数时则不可用。 有没有办法将这些参数化的匿名函数转换为常规函数调用。

如何多次调用函数?

我的问题是:我正在开发一个包含2个样式表的移动友好型网站,一个用于“面向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…} ); 我不会使用匿名函数,因为我之前已经编写过该函数。 我想做的事情非常简单:多次调用一个函数而不需要使用匿名函数来“复制”我的代码(毕竟,这就是函数应该如何工作,对吧?)。