自动识别jQuery函数中的缓动参数
Easing parameter in jQuery function automatically identified?
如何使用jQuery生成一个简单的弹出窗口的答案提供了以下简短的jsFiddle http://jsfiddle.net/SRw67/。在 jsFiddle 中,您可以找到:
function deselect(e) {
$('.pop').slideFadeToggle(function() {
e.removeClass('selected');
});
}
其中函数 slideFadeToggle 定义为:
$.fn.slideFadeToggle = function(easing, callback) {
return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
};
在jQuery文档中,我发现:
缓动 一个字符串,指示要用于 过渡。
函数 slideFadeToggle 有 2 个参数,但在代码中只传递一个函数。jQuery 是否自动识别参数是一个函数,从而跳过缓动参数并将函数作为回调传递?或者,当明显缺少缓动参数时,为什么这会起作用?
此外,为什么作者使用 $.fn.slideFadeToggle =..?
我在这里发现jQuery.fn是什么意思?这是$.prototype.slideFadeToggle的快捷方式,但对我来说没有任何意义。为什么这在这里有用?
jQuery是否自动识别参数是一个函数 从而跳过缓动参数并将函数作为 回调?
是的,这正是发生的事情。
通过阅读 jQuery 源代码,您可以看到animate
对将两个正式参数传递给它并不是很讲究。在当前版本中,这是间接完成的:这些参数用于通过调用 jQuery.Speed
来构造选项对象,而 又检查其参数的类型以确定哪个参数对应于什么(undefined
也由布尔检查隐式处理)。
在许多其他jQuery方法上也可以看到相同的行为;例如,无处不在的on
识别四个参数,其中第二个和第三个是可选的。
如果您查看.animate()
的文档,您会发现 easing
参数是可选的。规格为:
.animate( properties [, duration ] [, easing ] [, complete ] )
它确定你是否提供了这个参数的方法是检查第三个参数的数据类型——如果它是一个字符串,它是easing
,但如果它是一个函数,这意味着你省略了easing
参数(所以它将使用默认值),这是complete
参数。许多jQuery方法都是这样工作的;只要可选参数的类型都不同,它就可以找出你遗漏了哪些参数。
由于slideFadeToggle()
只是传递其参数,因此您会自动获得相同的能力 省略easing
.
默认easing
是"swing"
,见.animate()
- 我的jQuery插件参数没有正确启动,遇到了问题
- jquery设置为使用参数运行
- 如何向这个javascript/jquery函数添加参数
- 如何使用JQuery在HTML中创建包含字符串参数的引号的onclickjavascript链接
- 为什么jQuery文件的函数中有两个参数,但只接收一个参数
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- 如何在扩展jQuery方法时传递参数
- 将额外的参数传递给jquery.延迟回调
- 使用jquery变量作为.net MVC中ActionLink的参数
- 如何使用jQuery插件参数变量
- 如何使用pass参数从jQuery.getJSON获取回调
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 如何用javascript替换Jquery字符串上的新参数
- 将字符串作为参数传递给函数onclick event jquery
- 带有键代码参数Jquery的模拟按键功能
- 如何使用jQuery上下文参数
- 如何传递参数 jQuery 并返回函数值
- 如何检测是参数jQuery对象
- 单击网址时抓取网址参数.Jquery,Javascript
- 如何在JavaScript中从数组中选择多个参数(jQuery.path)