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可见,但从elemToChange...得到高度,而实际上两者都应该是elemToChange

$(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 回答
0

用这个

$('#mytab a[href="#tab2"]').on('shown.bs.tab', function (e) {
//my tab is your tab header id and tab2 is non-active tab id
});
于 2014-08-07T07:12:38.287 回答