首先,我道歉。我知道我想做什么,但不知道我应该怎么称呼它,也不知道该怎么问,所以我的谷歌搜索没有结果。
我有一些动画用来显示/隐藏文本。我试图将它全部包装在一个对象中,但是我这样做的方式是,我每次都必须运行一些计算代码,因为我不知道它存储在哪个部分。
现在,我讨厌的是我calculatePositions(entry);
在每次传递时都重新运行一个函数,而不是使用保存的值。麻烦的是,这将发生在多个元素上,因此位置数组需要更改。有没有办法将位置数组保存到特定的 DOM 元素并只计算一次?我可以将这些函数和属性附加到 DOM 元素而不是entry
每次都传入对象吗?
我的代码:
var theShort = {};
theShort.toggle = function(){
var positions = new Array;
function calculatePositions(entry){
/*
positions = Nasty calculation code
*/
}
function showLong(entry){
calculatePositions(entry);
//My toggle code is obviously more complex and uses the positions array.
//But for simplicity sake, I've omitted it
$(entry).find('.tsl-theshort').show();
$(entry).find('.tsl-thelong').hide();
}
function showShort(entry){
calculatePositions(entry);
$(entry).find('.tsl-theshort').show();
$(entry).find('.tsl-thelong').hide();
}
return {
init: function (){
$('.tsl-showLong').click(function(){
showLong($(this).closest('.entry-content'));
return false;
});
$('.tsl-showShort').click(function(){
showShort($(this).closest('.entry-content'));
return false;
});
}
};
}();
jQuery(document).ready(function($){
theShort.toggle.init();
});