страница прыгает по клику после выполнения javascript

У меня есть фрагмент javascript (jquery), который является ссылкой на href="#" для переключения щелчка.. все в порядке, за исключением того, что когда я нажимаю на страницу, она возвращается все вверх... я предпочитаю, чтобы страница оставалась там, где это... return false ничего не сделал...

вот код:

<script type="text/javascript"> 
 jQuery(document).ready(function(){
  jQuery('#social li').click(function(){
   button = jQuery(this).attr('class');
   switch (button)
    { 
    case 'social1' : 
    jQuery('#facebookbox').show(); 
    jQuery('#twitterbox').hide();
    jQuery('.social1 a').addClass('selected');
    jQuery('.social2 a').removeClass('selected');
    break;

    case 'social2' : 
    jQuery('#facebookbox').hide(); 
    jQuery('#twitterbox').show(); 
    jQuery('.social2 a').addClass('selected');
    jQuery('.social1 a').removeClass('selected');
    break;
    }
  });
}); 
</script>

person menardmam    schedule 08.09.2010    source источник
comment
href="#" ссылается на верхнюю часть страницы, поэтому, естественно, она прокручивает страницу вверх. Однако возврат false из обработчика onclick должен помешать браузеру фактически перейти по ссылке. Может быть, выложите какой-нибудь код?   -  person tdammers    schedule 08.09.2010


Ответы (2)


Сделайте ссылку на несуществующий якорь, например href="#_"

person Stephan Muller    schedule 08.09.2010

Вы можете установить href как href="javascript:void(0)". Это должно предотвратить его прыжки. Обязательно возвращайте false в событии onclick, иначе у вас могут возникнуть проблемы в IE6.

person Liggi    schedule 08.09.2010
comment
я не знал, ГДЕ поставить return false; что-то пробовал... не получилось - person menardmam; 08.09.2010
comment
Ваша ссылка будет выглядеть так: ‹a href=javascript:void(0) onclick=Function(); return false;›Привет, мир‹/a›. РЕДАКТИРОВАТЬ: Извините, я только что заметил, что вы делаете это по-другому. Поместите return false в конце функции анонимного клика. jQuery может уже справиться с этим за вас, я не уверен на 100%. В вашем примере код return false будет следовать за оператором switch. - person Liggi; 08.09.2010