1

スライダー プラグインを作成していますが、プラグインは Twitter Bootstrap タブ内で実行されます。ここに投稿された回答を読みました:

jQuery: jQuery で隠し要素の高さを取得する

プラグインに次のコードがありますが、最初のタブではないタブの高さが 0 になります。

$(elem, this).css({'position':'absolute','visibility':'hidden','display':'block'});
heightVal = $(elemToChange, this).height();
$(elem, this).css({'position':'static','visibility':'visible','display':'none'});

console.log(heightVal); // Only correct for first tab.

これを何らかの形で遅らせる必要がありますか?js ファイルは、ブートストラップの後にインクルードされます。

4

2 に答える 2

0

コードを見ると、高さを取得しようとしているのと同じ要素を更新する必要があります。あなたが見えるように見えますが、実際には両方が必要なときに...elemから高さを取得します。elemToChangeelemToChange

$(elemToChange, this).css({'display':'block'});
heightVal = $(elemToChange, this).height();
$(elemToChange, this).css({'display':'none'});

console.log(heightVal); // Only correct for first tab.

実際には、おそらくdisplay:block. Javascript はシングル スレッドであり、表示の変更、高さの読み取り、および表示の反転では、ペイント サイクルが実行されることさえありません (私は信じています)。また、余分なマージンがある場合は、...を実行すると失われる可能性がありposition:absoluteます...この余分なビットは、何らかの理由でまだ機能しない場合、その周りのコードに少し依存しています。フィドラーを提供します。

次のようなことを試してください:

var element = $(elemToChange, this).show();
heightVal = element.height();
element.hide();

console.log(heightVal); // Only correct for first tab.
于 2012-08-18T01:07:11.483 に答える