Последний элемент вкладки jQuery дублируется в Safari - PullRequest
0 голосов
/ 20 февраля 2011

У меня есть несколько вкладок jQuery, установленных в правой части страницы, однако в Safari ссылка на последнюю вкладку дублируется, т. Е. «Статическая страница» отображается дважды.Это не происходит в других браузерах.Любая помощь в том, почему это происходит.

http://ghostpool.com/wordpress/reviewit/review/quisque-ultricies-consequat/

Это код моей вкладки:

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');
        });
    });
});

1 Ответ

0 голосов
/ 20 февраля 2011

По какой-то причине метод find возвращает дополнительный элемент, трудно сказать, почему, основываясь на всем HTML.Разобранный пример вашей страницы работает в Safari

Чтобы исправить скрипт, если вы ищете только элементы с панелью классов (вместо div.panel), он должен работать в Safari

panelContainer.find('.panel').each(function(n){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...