Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最后一个jQuery选项卡元素在Safari中重复_Jquery_Safari_Tabs_Duplicates - Fatal编程技术网

最后一个jQuery选项卡元素在Safari中重复

最后一个jQuery选项卡元素在Safari中重复,jquery,safari,tabs,duplicates,Jquery,Safari,Tabs,Duplicates,我在页面右侧设置了一些jQuery选项卡,但是在Safari中,最后一个选项卡链接是重复的,即“静态页面”显示两次。这在其他浏览器中不会发生。任何关于为什么会发生这种情况的帮助 这是我的标签代码: jQuery(document).ready(function(){ // We can use this object to reference the panels container var panelContainer = jQuery('div#panels');

我在页面右侧设置了一些jQuery选项卡,但是在Safari中,最后一个选项卡链接是重复的,即“静态页面”显示两次。这在其他浏览器中不会发生。任何关于为什么会发生这种情况的帮助

这是我的标签代码:

jQuery(document).ready(function(){
    // We can use this object to reference the panels container
    var panelContainer = jQuery('div#panels');

    // Find panel names and create nav
    // -- Loop through each panel
    panelContainer.find('div.panel').each(function(n){
        // For each panel, create a tab
        jQuery('div#tabs-box ul').append('<li class="tab"><a href="#' + (n+1) + '">' + jQuery(this).attr('title') + '</a></li>');
    });

    // Determine which tab should show first based on the URL hash  
    var panelLocation = location.hash.slice(1);
        if(panelLocation == '1'){
            var panelNum = panelLocation;
        } else if(panelLocation == '2'){
            var panelNum = panelLocation;
        } else if(panelLocation == '3'){
            var panelNum = panelLocation;
        } else if(panelLocation == '4'){
            var panelNum = panelLocation;
        } else if(panelLocation == '5'){
            var panelNum = panelLocation;
        } else if(panelLocation == '6'){
            var panelNum = panelLocation;
        } else if(panelLocation == '7'){
            var panelNum = panelLocation;
        } else if(panelLocation == '8'){
            var panelNum = panelLocation;           
        } else if(panelLocation == '9'){
            var panelNum = panelLocation;           
        } else if(panelLocation == '10'){
            var panelNum = panelLocation;
        }else{
            var panelNum = '1';
        }   
    // Hide all panels
    panelContainer.find('div.panel').hide();
    // Display the initial panel
    panelContainer.find('div.panel:nth-child(' + panelNum + ')').fadeIn('slow');
    // Change the class of the current tab
    jQuery('div#tabs-box ul').find('li.tab:nth-child(' + panelNum + ')').removeClass().addClass('tab-active');

    // What happens when a tab is clicked
    // -- Loop through each tab
    jQuery('div#tabs-box ul').find('li').each(function(n){
        // For each tab, add a 'click' action
        jQuery(this).click(function(){
            // Hide all panels
            panelContainer.find('div.panel').hide();
            // Find the required panel and display it
            panelContainer.find('div.panel:nth-child(' + (n+1) + ')').fadeIn('slow');
            // Give all tabs the 'tab' class
            jQuery(this).parent().find('li').removeClass().addClass('tab');
            // Give the clicked tab the 'tab-active' class
            jQuery(this).removeClass().addClass('tab-active');
        });
    });
});
jQuery(文档).ready(函数(){
//我们可以使用此对象引用panels容器
var panelContainer=jQuery('div#panels');
//查找面板名称并创建导航
//--通过每个面板进行循环
panelContainer.find('div.panel')。每个(函数(n){
//为每个面板创建一个选项卡
jQuery('div#tabs box ul')。追加('
  • ); }); //根据URL哈希确定应首先显示哪个选项卡 var panelLocation=location.hash.slice(1); 如果(面板位置='1'){ var panelNum=panelLocation; }else if(panelLocation='2'){ var panelNum=panelLocation; }else if(panelLocation==“3”){ var panelNum=panelLocation; }else if(panelLocation='4'){ var panelNum=panelLocation; }else if(面板位置='5'){ var panelNum=panelLocation; }else if(面板位置='6'){ var panelNum=panelLocation; }else if(面板位置='7'){ var panelNum=panelLocation; }else if(面板位置='8'){ var panelNum=panelLocation; }else if(面板位置='9'){ var panelNum=panelLocation; }else if(面板位置='10'){ var panelNum=panelLocation; }否则{ var panelNum='1'; } //隐藏所有面板 panelContainer.find('div.panel').hide(); //显示初始面板 panelContainer.find('div.panel:n个子('+panelNum+')).fadeIn('slow'); //更改当前选项卡的类别 jQuery('div#tabs box ul').find('li.tab:n个子('+panelNum+')).removeClass().addClass('tab-active'); //单击选项卡时会发生什么情况 //--循环浏览每个选项卡 jQuery('div#tabs box ul')。find('li')。每个(函数(n){ //对于每个选项卡,添加“单击”操作 jQuery(this).单击(函数(){ //隐藏所有面板 panelContainer.find('div.panel').hide(); //找到所需的面板并显示它 panelContainer.find('div.panel:n个子('+(n+1)+')).fadeIn('slow'); //为所有选项卡设置“tab”类 jQuery(this).parent().find('li').removeClass().addClass('tab'); //为单击的选项卡指定“tab active”类 jQuery(this.removeClass().addClass('tab-active'); }); }); });
    出于某种原因,find方法返回了一个额外的元素,很难说为什么基于所有HTML。一个简化的页面示例在Safari中工作

    要修复脚本,如果只使用类面板(而不是
    div.panel
    )搜索元素,它应该可以在Safari中工作

    panelContainer.find('.panel').each(function(n){
    

    非常感谢David,这解决了问题。