【问题标题】:Masonry js is messing with the Bootstrap tab functionMasonry js 搞乱了 Bootstrap 选项卡功能
【发布时间】:2014-11-04 19:37:31
【问题描述】:

我在 Desandro 的 Masonry 中使用 Bootstrap 选项卡功能,问题是当我加载页面时,它从第一个选项卡开始半秒钟,然后跳转到带有 Masonry 的选项卡。 我猜我可以用一些脚本来解决这个问题,但是我对 js/jquery 太陌生了,无法弄清楚。

我尝试更改脚本代码的顺序,因为它看起来像页面加载,然后 Masonry 脚本发生并强制其选项卡处于活动状态。但不管代码的顺序如何,它仍然会发生。

具体来说,我需要有人指出我忽略的错误,或者给我一些关于如何使页面在加载时停留在第一个选项卡上的指示。

我在此处包含了我的 html 和 js 控件,但我还在http://jsfiddle.net/jccarter1990/o15e98ts/3/ 处修改了完整代码

提前致谢

<ul class="nav nav-pills" role="tablist" id="myTab">
		<li role="presentation" class="active"><a href="#page-one" role="tab" data-toggle="tab">Cover Letter</a></li>
		<li role="presentation"><a href="#page-two" role="tab" data-toggle="tab">Features</a></li>
		<li role="presentation"><a href="#page-three" role="tab" data-toggle="tab">Gallery</a></li>
	</ul>

<div class="tab-content">

<div role="tabpanel" class="tab-pane active"  id="page-one">Cover Letter</div>
  
<div role="tabpanel" class="tab-pane"  id="page-two">Features</div>
  
<div role="tabpanel" class="tab-pane"  id="page-three">
  <div class="masonry js-masonry" >
  <div class="item"><img class="thumbnail" src="img/paigeJohnLasVegas.jpg"></div>
  <div class="item"><img class="thumbnail" src="img/engagementsCloseUp.jpg"></div>
  <div class="item"><img class="thumbnail" src="img/jimmyJohns.jpg"></div>
  <div class="item"><img class="thumbnail" src="img/paigeNinjaTurtle.jpg"></div>
  <div class="item"><img class="thumbnail" src="img/sprayPaintSid.jpg"></div>
    </div>  
  </div>

<script>
	var container = document.querySelector('.masonry');
		var msnry;
		// initialize Masonry after all images have loaded
		imagesLoaded( container, function() {
		msnry = new Masonry( container );
		});
	var container = document.querySelector('.masonry');
		var msnry = new Masonry( container, {
		  // options
		  columnWidth: 200,
		  itemSelector: '.masonry.item'
		});
	
	$('#myTab a').click(function (e) {
		e.preventDefault()
		$(this).tab('show')
})

	$(function () {
		$('#myTab a[href="#page-one"]').tab('show')
		$('#myTab a[href="#page-two"]').tab('show')
		$('#myTab a[href="#page-three"]').tab('show')
	})

	
</script>

【问题讨论】:

  • 所以您没有小提琴或垃圾箱,但您希望人们安装所有这些东西,然后免费找出解决方案?使用所有脚本和初始化来制作小提琴或垃圾箱。
  • 谢谢,我对此很陌生。我已经包含了一个指向我的小提琴的链接,它应该有你需要的一切

标签: javascript twitter-bootstrap tabs jquery-masonry masonry


【解决方案1】:

更新答案:将您的第一个选项卡和面板设置为活动选项卡:

Fiddle

 <div class="container navigation"> <span class="nt-name">John Carter</span>

 <br>   <span class="nt-title">Professional Portfolio</span>

 <ul class="nav nav-pills" role="tablist" id="myTab">
    <li role="presentation" class="active"><a href="#page-one" role="tab" data-toggle="tab">Cover Letter</a>

    </li>
    <li role="presentation"><a href="#page-two" role="tab" data-toggle="tab">Features</a>

    </li>
    <li role="presentation"><a href="#page-three" class="active" role="tab" data-toggle="tab">Gallery</a>

    </li>
</ul>
 </div>
 <div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="page-one">
    <div class="container">
            <h1>Cover Letter</h1>

    </div>
</div>
<div role="tabpanel" class="tab-pane" id="page-two">
    <div class="container">
         <h1>Features</h1>

    </div>
 </div>
  <div role="tabpanel" class="tab-pane" id="page-three">
    <div class="container">
            <h1>Gallery</h1>

    </div>
    <div class="masonry js-masonry">
        <div class="item">
            <img class="thumbnail" src="img/paigeJohnLasVegas.jpg">
        </div>
        <div class="item">
            <img class="thumbnail" src="img/engagementsCloseUp.jpg">
        </div>
        <div class="item">
            <img class="thumbnail" src="img/jimmyJohns.jpg">
        </div>
        <div class="item">
            <img class="thumbnail" src="img/paigeNinjaTurtle.jpg">
        </div>
        <div class="item">
            <img class="thumbnail" src="img/sprayPaintSid.jpg">
        </div>
    </div>
</div>
</div>

把你的脚本改成这样:

//bootstrap tab function
$('#myTab a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})

省略:

顺便说一句,如果您选中包含 Bootstrap 的框,则不必在 jsfiddle 中包含选项卡的 bootstrap.js,它包含 js。如果你有其他 js 需要包含,比如 masonry.js,使用外部资源添加它们,而不是粘贴到脚本面板中。这样可以让人们更容易看到相关代码。

【讨论】:

  • 我不希望第三个标签首先出现。问题是即使第一个选项卡设置为活动,它也会转到第三个选项卡。我想要一种方法让标签 3 上的 Masonry 正确加载,但让页面像往常一样从标签 1 开始。但是感谢 Fiddle 的提示,这非常有帮助。
猜你喜欢
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 2019-06-21
  • 1970-01-01
  • 2022-12-28
  • 1970-01-01
相关资源
最近更新 更多