8

我的页面内容使用不同的链接进行切换,div使用 jQuery 'showonlyone' 函数一次显示一个。在加载页面时,不应显示任何 div。我让它工作正常,直到我尝试在其中一个 div 中放置一个图片滑块(bxSlider) newboxes1,.

在盒子外面,bxSlider 工作正常。在其中,图片不显示。在此处查看实时示例。

这是我的代码的样子:

<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">←&lt;/div></div>
<div class="bx-next"><div id="bx-next-sample">→&lt;/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 问题,如您在此处看到的。但是,加载页面时会显示内容,而我希望将所有内容都隐藏起来。任何尝试在代码中display:blockdisplay:none其他地方使用的尝试均未成功。

谁能想到解决这个问题的方法?谢谢你。

4

4 回答 4

19

我在使用 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(包含滑块)之后重新加载了幻灯片,并且效果很好。也许这可以帮助解决您的问题并避免使用可见性:隐藏和其他技巧。

于 2012-09-04T07:55:13.330 回答
6

我知道这个问题是不久前被问到的,但我有同样的问题。我不知道 bxSlider 和 display:none 是怎么回事。如果内容包含在显示设置为无的 div 中,它似乎不会读取内容。

到目前为止,我已经通过切换visibility:hiddenvisibility:visible不是显示来解决它。

于 2012-08-17T15:58:29.700 回答
2

您可以使用可见性:隐藏和可见性:可见,但会有些麻烦。你可以使用 height:0px;overflow:hidden; 我正在使用最后一个解决方案

于 2014-04-10T14:00:33.917 回答
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>
于 2014-06-24T17:57:20.373 回答