Flexslider +散列+ jquery UI标签冲突?

时间:2014-07-16 14:21:29

标签: jquery-ui hash tabs conflict flexslider

我会尽力解释这个,因为我不是开发人员。

基本上我在我工作的网站上使用jquery UI标签插件,共有3个标签。在这些标签的每一个中都会有一个可以滚动5张幻灯片的柔性滑板。

还有一个标签散列系统,它是为我们开发的,允许从URL到各个标签内容区域的深层链接。

我遇到的问题是,如果某人直接链接到第二个或第三个选项卡,则第一个选项卡上的弹性滑块并不总是显示其内容。这个盒子里有导航和放大器。分页,但实际上没有内容显示。只有在通过URL链接到第二个或第三个选项卡时才会出现这种情况。如果您通过URL链接到第一个选项卡,则所有flexsliders都会相应地工作。

基本上,jQuery选项卡需要与Flexslider& URL深层链接。任何建议表示赞赏!

这是我正在使用的JS代码:

<!-- Tabs configuration -->
<script type="text/javascript">
$(function() {
$( "#tabs" ).tabs();
});

// Flexslider configuration (updated 24/02/2014)

var sliderinit = function(t){
    $('#' + t + ' .flexslider').flexslider({
        animation: "slide",
        pauseOnAction: true,
        pauseOnHover: true,
        slideshowSpeed: 9000,
        animationSpeed: 500,
        randomize: true,
        animationLoop: true
    });
}

$(window).load(function() {
    sliderinit('tabs-1');
});

$(document).on('click', '.ui-tabs-anchor', function () {
    var t = $(this).attr('href').replace('#', '');      
    sliderinit(t);      
}); 





//<!-- jQuery Back Button configuration (BBQ) -->

$(function(){
var tabs = $('.ui-tabs'),
tab_a_selector = 'ul.ui-tabs-nav a';
tabs.tabs({ event: 'change' });
tabs.find( tab_a_selector ).click(function(){
    var state = {},
    id = $(this).closest( '.ui-tabs' ).attr( 'id' ),
    idx = $(this).parent().prevAll().length;
    state[ id ] = idx;
    $.bbq.pushState( state );
});
$(window).bind( 'hashchange', function(e) {
    tabs.each(function(){
        var idx = $.bbq.getState( this.id, true ) || 0;
        $(this).find( tab_a_selector ).eq( idx ).triggerHandler( 'change' );
        var t = $(this).find( tab_a_selector ).eq( idx ).attr('href').replace('#', '');         
        sliderinit(t);  
    });
})
$(window).trigger( 'hashchange' );
});

HTML:

<div id="tabs-1">
        <div class="flexslider-container">
            <div id="main-slider" class="flexslider">
                <ul class="slides">
                    <li id="one"></li>
                    <li id="two"></li>
                    <li id="three"></li>
                    <li id="four"></li>
                    <li id="five"></li>
                </ul>
            </div> <!-- END FLEX SLIDER -->
        </div><!-- END OF FLEXSLIDER CONTAINER -->
</div> <!-- END OF TABS 1 -->

  <!-- TAB 2 -->
<div id="tabs-2"> 
        <div class="flexslider-container">
            <div id="main-slider1" class="flexslider">
                <ul class="slides">
                    <li id="one"></li>
                    <li id="two"></li>
                    <li id="three"></li>
                    <li id="four"></li>
                    <li id="five"></li>
                </ul>
            </div> <!-- END FLEX SLIDER -->
        </div> <!-- END OF FLEXSLIDER CONTAINER -->
</div> <!-- END OF TABS 2 -->

   <!-- TAB 3 -->
<div id="tabs-3">
        <div class="flexslider-container">
            <div id="main-slider2" class="flexslider">
                <ul class="slides">
                    <li id="one"></li>
                    <li id="two"></li>
                    <li id="three"></li>
                    <li id="four"></li>
                    <li id="five"></li>
                </ul>
            </div> <!-- END FLEX SLIDER -->
        </div> <!-- END OF FLEXSLIDER CONTAINER -->
</div> <!-- END OF TABS 2 -->


</div> <!-- END OF TABS -->

1 个答案:

答案 0 :(得分:0)

jquery-ui标签内 flexslider DEMO

JS代码:

$(function() {
     var slider2_initialized = false;
     var slider3_initialized = false;

     $( "#tabs" ).tabs({
         activate: function( event, ui ) {
            //console.log("ui = ");console.log(ui);
            var tab_id = $(ui.newPanel).attr('id');//alert(tab_id);

            if(tab_id == "tabs-2" && slider2_initialized == false)
            {    
                $('#flexslider2').flexslider({
                    animation: "slide"
                  }); 
                //update initialization flag to true
                slider2_initialized = true;
            }
            else if(tab_id == "tabs-3" && slider3_initialized == false)
            {    
                $('#flexslider3').flexslider({
                    animation: "slide"
                  }); 
                //update initialization flag to true
                slider3_initialized = true;
            }
         }
     });

$('#flexslider1').flexslider({
    animation: "slide"
  });   
});

HTML:

<div id="tabs">
<ul>
<li><a href="#tabs-1">Tab 1</a></li>
<li><a href="#tabs-2">Tab 2</a></li>
<li><a href="#tabs-3">Tab 3</a></li>
</ul>
<div id="tabs-1">
<p>
    <div id="flexslider1">
  <ul class="slides">

  <li><img src="http://bxslider.com/images/730_200/tree_root.jpg" title="Funky roots" /></li>
  <li><img src="http://bxslider.com/images/730_200/hill_road.jpg" title="The long and winding road" /></li>
  <li><img src="http://bxslider.com/images/730_200/trees.jpg" title="Happy trees" /></li>
</ul>
    </div>
</p>
</div>

<div id="tabs-2">
<p>
    <div id="flexslider2">
  <ul class="slides">

  <li><img src="http://bxslider.com/images/730_200/tree_root.jpg" title="Funky roots" /></li>
  <li><img src="http://bxslider.com/images/730_200/hill_road.jpg" title="The long and winding road" /></li>
  <li><img src="http://bxslider.com/images/730_200/trees.jpg" title="Happy trees" /></li>
</ul>
    </div>
</p>
</div>

<div id="tabs-3">
<p>
    <div id="flexslider3">
  <ul class="slides">

  <li><img src="http://bxslider.com/images/730_200/tree_root.jpg" title="Funky roots" /></li>
  <li><img src="http://bxslider.com/images/730_200/hill_road.jpg" title="The long and winding road" /></li>
  <li><img src="http://bxslider.com/images/730_200/trees.jpg" title="Happy trees" /></li>
</ul>
    </div>

</p>
</div>
</div>