まず、お詫び申し上げます。私は自分が何をしたいのかは知っていますが、それを何と呼ぶべきか、またはそれをどのように尋ねるべきかをまったく知らないので、私のグーグルは実を結ばなかった。
テキストの表示/非表示に使用しているアニメーションがあります。すべてをオブジェクトにまとめようとしていますが、どのセクションに格納されているかわからないため、毎回計算コードを実行する必要があります。
今、私が嫌うのはcalculatePositions(entry);
、保存された値を使用するのではなく、パスごとに関数を再実行していることです。問題は、これは複数の要素で発生するため、positions配列を変更する必要があることです。位置配列を特定のDOM要素に保存し、それを1回だけ計算する方法はありますか?entry
毎回オブジェクトを渡すのではなく、これらの関数とプロパティをDOM要素にアタッチできますか?
私のコード:
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();
});