1

主要是关于动画;

我有几个具有不同动画的元素,可以使用它们自己的独特设置显示或隐藏它们;带有轻微弹跳的弹出式菜单、淡入/淡出的菜单等。

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

有没有办法保存选择目标的默认选项?就像是...

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

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

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

谢谢你。

4

2 回答 2

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();
于 2013-02-07T15:12:32.493 回答
1

是和不是。您可能会修补所有这些方法以允许默认值,但是自己传递选项更有意义。

$("#foo").data("hide", { /* defaults here */});

// later on...
var $foo = $("#foo"), options = $foo.data("hide");
$foo.hide(options);

如果您修补方法以在存在数据选项的情况下自动执行此部分,那么未来的开发人员(或一段时间后的您自己)可能很难弄清楚为什么调用.hide()会导致动画,而它不应该。

于 2013-02-07T15:12:52.930 回答