主要是关于动画;
我有几个不同动画的元素,可以使用自己独特的设置显示或隐藏;弹出窗口略有反弹,菜单淡入/淡出等等。
几个按钮/小部件/事件将隐藏/显示这些元素,我想避免为每个潜在的调用复制hide()或show()中的选项。我也不想在某处跟踪默认选项列表;我想在初始化时设置动画设置,因此以后任何脚本都不需要担心传入选项。
有没有办法保存选定目标的默认选项?有点像...
$('#foo').setDefaultOptions('hide', {/* New Defaults */});
// or...
$('#foo').hide.defaults = {/* New Defaults */};
所以调用下面的内容只会使用这些选项而无需进一步输入:
$('#foo').hide(); // Uses those default values set earlier
谢谢。
答案 0 :(得分:2)
在创建对象后,使用.data()
设置对象本身的选项。然后,创建自己的.hide()
和.show()
版本,从.data()
获取选项。
// define custom hide function that retrieves default options
$.fn.myHide = function() {
this.each(function() {
var item = $(this);
item.hide(item.data("animOptions"));
});
return this;
}
// set default options once
$("#foo").data("animOptions", {...});
// from then on, just call the method and it uses the object-specific default options
$("#foo").myHide();
答案 1 :(得分:1)
是和否。您可能会将所有这些方法的monkeypatch设置为允许默认值,但是自己传递选项更有意义。
$("#foo").data("hide", { /* defaults here */});
// later on...
var $foo = $("#foo"), options = $foo.data("hide");
$foo.hide(options);
如果您修改方法而不是自动执行此部分,如果数据选项存在,未来的开发人员(或您自己一段时间以后)可能很难弄清楚为什么调用.hide()
导致动画时它不应该。