2016-10-26 6 views
1

固定位置の「固定要素」があります。クライアントが画面のサイズを変更した後、またはDOMが変更された後。静的な(相対的な)位置を再定義する必要があります。固定要素から(静的)オフセットを取得する

要素は、(それがスティック)固定位置を持っているとき、私は単に相対的に要素の位置を変更するには、それがオフセットのgetおよび位置をリセット:

if (self.isStick) { 
    elemOffset = $element.css('position', 'relative').offset(); 
    $element.css('position', 'fixed'); 
} else { 
    elemOffset = $element.offset(); 
} 

これは動作しますが、それは一種のハック感じています。私は、代替手段があるかどうか、より良い性能を求めています。何か案は?

+0

'elemOffset = self.isStick? $ element.clone()。css( 'position'、 'relative').offset():$ element.offset(); ' –

答えて

2

ここでは、JQuery .clone()を使用して要素をコピーする例を示します。 1行に要素オフセットを取得する

elemOffset = self.isStick ? $element.clone().css('position', 'relative').offset() : $element.offset(); 
+0

これは素晴らしいonelinerですが、' .clone() 'は要素の深いコピーとそれは子供です。私はこれが与えられたコードを悪化させると思います。もし私が間違っているなら、私を訂正してください。 – JasonK

+0

あなたはメモリリークを抱えています –

関連する問題