@Genexys
фронтенделье

Как отменить действие на другие ссылки?

$('a[href^="#"]').click(function () { 
			   $('html, body').animate({ scrollTop:  $('a[name="'+this.hash.slice(1)+'"]').offset().top }, 1000 ); 
        return false;
		   });


есть вот такой код, для перехода по якорям, но дело в том, что на "href" у меня еще весит вызов модальных окон, и этот код не дает их открывание, потому что это тоже ссылка ну и т.д.

вот такие у меня кнопки,
<div class="button_wrap">
           <a href="#hidden_form" class="button btn_red popup_c">text</a>
 </div>


можно как то обойти это?
  • Вопрос задан
  • 466 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Очевидно, что для ссылок, обслуживающих некоторые сценарии, нужно задать data-атрибуты.

Ссылка для модальных окон
<a href="#hidden_form" class="button btn_red popup_c" data-action="modal">text</a>

JS
$(document).on('click', 'a[href^="#"]', function (e) { 
	e.preventDefault();

	switch ($(this).data('action')) {
		case 'modal':
			// Что-то для всплывашек
			break;
		case 'help':
			// Напрмиер, для помощи
			break;
		default:
			$('html, body').animate({
				scrollTop: $('#' + this.hash.slice(1)).offset().top
			}, 1000);
			break;
	}
});

И прекратите сначала искать, а потом регистрировать обработчик. Пользуйтесь делегированием. Плюс к этому, используйте id вместо name, прошлый век же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект
28 мар. 2024, в 20:37
50000 руб./за проект