2012-05-24 2 views
1

Я ищу кросс-браузерное решение для выделения вкладок. При загрузке страницы первая вкладка должна выделяться и нажимать на другие вкладки, первая вкладка будет отображаться без выделения, и выбранная вкладка будет выделяться. Невозможно заставить эту функциональность работать одинаково в IE и Firefox одновременно. Какие-либо входы по этому поводу?ищет кросс-браузерное решение для выделения вкладок

Примечание: приведенный ниже код работает, но когда я нажимаю на любую другую ссылку на странице, фокус на вкладках теряется, и поэтому выбранная вкладка не выделяется.

JS

$(document).ready(function() { 
    activate('focusmeplease'); 
    $('#tabs ul li:first').addClass('active'); 
    $('#tabs ul li a').click(function() { 
     $('#tabs ul li').removeClass('active'); 
     $(this).parent().addClass('active'); 
    }); 
}); 

function activate(link) { 
    if (document.getElementById) document.getElementById(link).focus(); 
    else if (document.all) document.all(link).focus(); 
} 

HTML

<div id="tabs"> 
    <ul> 
     <li class="clas" onclick="javascript: addPlayer('tab-1','1649028604001');"> 
      <a href="javascript:void(0);" id="focusmeplease">First tab</a> 
     </li> 
     <li class="clas" onclick="javascript: addPlayer('tab-1','1651558610001');"> 
      <a href="javascript:void(0);">Second tab</a> 
     </li> 
    </ul> 
    <div id="tab-1"></div> 
</div> 

ответ

0

В вашем click случае, просто вызовите метод focus. Как так:

$(document).ready(function() { 
    activate('focusmeplease'); 
    $('#tabs ul li:first').addClass('active'); 
    $('#tabs ul li a').click(function() { 
     $('#tabs ul li').removeClass('active'); 
     $(this).parent().addClass('active'); 
     $(this).focus(); //i've added this 
    }); 
}); 

Смотрите эту скрипку HERE

+0

Оцените это! Но из-за использования .focus(), когда я щелкаю за пределами области вкладок, ни одна из вкладок не выделяется. Я хочу, чтобы последняя выбранная вкладка была выбрана до тех пор, пока я не нажму на другую вкладку. – neelmeg

+0

Ах, хорошо, тогда вы можете просто использовать свой собственный класс и переключить его на 'a', вместо этого увидите эту скрипку: http://jsfiddle.net/NFdah/1/ – mattytommo

+0

Ссылка jsfiddle работает отлично. Он отлично работает и в Firefox на моем сайте, к сожалению, в IE, когда я щелкаю за вкладками, последняя выбранная вкладка теряет фокус, все еще пытаясь понять это. Возможно, мне придется искать совершенно другой подход, если это не сработает. – neelmeg

0

Наконец это код, который работает во всех браузерах. Мне пришлось переместить функцию addPlayer из действия onClick тега привязки в функцию jQuery li click.

jQuery(document).ready(function(){     
        addPlayer('tab-1', '1649028596001');//on page load, display this. 
        jQuery('#tabs ul li:first').addClass('active'); 
        jQuery('#tabs ul li').click(function() { 
           addPlayer('tab-1', playerIdArray[jQuery(this).index()]); 
           jQuery('#tabs ul li').removeClass("active"); 
           jQuery(this).addClass("active"); 
         }); 

}); 


<ul> 

    <li class="class4" ><a href="javascript:void(0);">Bond</a></li> 
    <li class="class5" ><a href="javascript:void(0);">Stock</a></li> 
    </ul> 
    <div id="tab-1"> 

    </div> 
Смежные вопросы