2013-02-07 81 views
1

主要關於動畫;jQuery;以每個元素爲基礎設置默認選項

我有幾個不同的動畫元素可能會顯示或隱藏使用自己的獨特設置;彈出式菜單淡入/淡出等

幾個按鈕/小部件/事件將隱藏/顯示這些元素,並且我想避免必須複製hide()中的選項或顯示()爲每個潛在的呼叫。我也不想跟蹤某個地方的默認選項列表;我想在初始化時設置它們的動畫設置,因此任何腳本稍後都不需要擔心傳入選項。

有沒有辦法保存選擇目標的默認選項?喜歡的東西...

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

所以調用下面將只使用這些選項沒有進一步的輸入:

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

謝謝。

回答

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

是和否。你可能會潛在地哄騙所有這些方法來允許默認值,但是自己傳遞選項更有意義。

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

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

如果修補方法,如果數據選項存在,未來的開發者(或者你自己在一段時間後),可能很難搞清楚爲什麼叫.hide()導致動畫時,而不是自動完成這部分不應該。

相關問題