bxSlider在show / hide divs中

时间:2012-06-17 12:25:21

标签: javascript jquery html bxslider

我的网页内容使用不同的链接进行切换,使用jQuery“showonlyone”功能一次显示一个div。加载页面时,不应显示任何div。我把它工作得很好,直到我试图在其中一个div newboxes1中放置一个图片滑块(bxSlider)。

在框外,bxSlider工作正常。在其中,图片不显示。查看实时示例here

以下是我的代码:

<head>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">                                         
function showonlyone(thechosenone) {
     $('.newboxes').each(function(index) {
          if ($(this).attr("id") == thechosenone) {
               $(this).show();
          }
          else {
               $(this).hide();
          }
     });
}</script>  
</script>


<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script src="jquery.bxSlider.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function(){

$(function(){
  var slider = $('#slidersample').bxSlider({
    mode:'fade',
    controls: false
  });
  $('#bx-prev-sample').click(function(){
    slider.goToPreviousSlide();
    return false;
  });
    $('#hover-next-g-sample').click(function(){
    slider.goToPreviousSlide();
    return false;
  });
  $('#bx-next-sample').click(function(){
    slider.goToNextSlide();
    return false;
  });
  $('#hover-next-d-sample').click(function(){
  slider.goToNextSlide();
  return false;
  });
});
});
</script>
</head>


<body>
<div id="left-menu">
<a id="myHeader1" href="javascript:showonlyone('newboxes1');" >LINK 1</a><br />
<a id="myHeader2" href="javascript:showonlyone('newboxes2');" >LINK 2</a><br />
<a id="myHeader3" href="javascript:showonlyone('newboxes3');" >LINK 3</a>
</div>

<div class="newboxes" id="newboxes1">DIV 1
<!-- SLIDER -->
<div id="slider" style="margin-top: 0px; width="580 px"; height="375 px">
<div class="bx-prev"><div id="bx-prev-sample">←</div></div>
<div class="bx-next"><div id="bx-next-sample">→</div></div>
<div class= "hover-next-g"><div id="hover-next-g-sample" style="height:100%; width:100%"></div></div>
<div class= "hover-next-d"><div id="hover-next-d-sample" style="height:100%; width:100%"></div></div>
<ul id="slidersample" width="580px" height="375 px" style="margin:0px ; padding:0px">
  <li><img src="images/1.jpg" width="580" height="375" /></li>
  <li><img src="images/2.jpg" width="580" height="375" /></li>
  <li><img src="images/3.jpg" width="580" height="375" /></li>
</ul>
</div>
<!-- SLIDER END-->
</div>

 <div class="newboxes" id="newboxes2">DIV 2<br /></div>

 <div class="newboxes" id="newboxes3">DIV 3</div>

</body>
</html>

我用

.newboxes {display:none;}
CSS中的

因此在加载页面时没有显示任何div。从CSS中删除它可以解决bxSlider问题,因为您可以看到here。但是,页面加载时会显示内容,而我希望隐藏所有内容。任何在代码中其他地方使用display:blockdisplay:none的尝试均未成功。

有人能想出解决这个问题的方法吗?谢谢。

4 个答案:

答案 0 :(得分:18)

我遇到了与bxSlider插件类似的问题:当包含它的DIV最初隐藏display:none时,当我使DIV可见$('#div-id').show();时,幻灯片显示不会出现。仅出现幻灯片控制按钮。然后我解决了这个问题:

<script>

var mySlider;

$(function() {

    mySlider = $('#slider').bxSlider({
            easing: 'easeInCubic',
            displaySlideQty: 3,
            moveSlideQty: 1,
            infiniteLoop: false,
            hideControlOnEnd: true
    });

    $("#processSignUp").click(function() {   // button that sets the DIV visible
        $("#trainings-slide").show();     // DIV that contain SLIDER
        mySlider.reloadSlider();        // Reloads the slideshow (bxSlider API function)
    });

});

</script>

正如您所看到的,我重新加载幻灯片刚刚显示了DIV(包含滑块)并且效果非常好。也许这有助于解决您的问题并避免使用可见性:隐藏和其他技巧。

答案 1 :(得分:6)

我知道这个问题是在前一段时间被问过的,但我有同样的问题。我不知道最新的bxSlider和display:none。如果内容包含在显示设置为无的div中,它似乎不会读取内容。

到目前为止,通过切换visibility:hiddenvisibility:visible代替显示,我已经解决了这个问题。

答案 2 :(得分:2)

您可以使用visibility:hidden和visibility:visible,但会遇到一些麻烦。你可以使用高度:0px;溢出:隐藏; 我用最后的解决方法

答案 3 :(得分:2)

另一种解决方案是允许加载bxslider,然后一旦隐藏就隐藏它。

<script>
    var mySlider;

    $(function() {
        mySlider = $('#slider').bxSlider({
            easing: 'easeInCubic',
            displaySlideQty: 3,
            moveSlideQty: 1,
            infiniteLoop: false,
            hideControlOnEnd: true,
            onSliderLoad: function() {
                $('#trainings-slide').hide();
            }
        });
    });
</script>