jQuery的;基于每个元素设置默认选项

时间:2013-02-07 15:08:37

标签: jquery animation parameters

主要是关于动画;

我有几个不同动画的元素,可以使用自己独特的设置显示或隐藏;弹出窗口略有反弹,菜单淡入/淡出等等。

几个按钮/小部件/事件将隐藏/显示这些元素,我想避免为每个潜在的调用复制hide()或show()中的选项。我也不想在某处跟踪默认选项列表;我想在初始化时设置动画设置,因此以后任何脚本都不需要担心传入选项。

有没有办法保存选定目标的默认选项?有点像...

$('#foo').setDefaultOptions('hide', {/* New Defaults */});
// or...
$('#foo').hide.defaults = {/* New Defaults */};

所以调用下面的内容只会使用这些选项而无需进一步输入:

$('#foo').hide(); // Uses those default values set earlier

谢谢。

2 个答案:

答案 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()导致动画时它不应该。