Эй, ребята,
У меня есть поле ввода, которое ищет совпадающие символы на странице. Эта страница просто перечисляет якорные ссылки. Поэтому при вводе текста я постоянно загружаю () (используя метод jquery load ()) эту страницу со всеми ссылками и проверяю соответствие символов. Если найдена соответствующая ссылка, она отображается для пользователя. Однако все эти ссылки должны иметь e.preventDefault () на них.
Это просто не сработает. #found - это контейнер, который показывает совпадающие элементы. На всех ссылках, на которые вы нажали, должна быть функция protectDefault ().
редактирование:
/*Animated scroll for anchorlinks*/
var anchor = '',
pageOffset = '',
viewOffset = 30,
scrollPos = '';
$(function() {
$("a[href*='#']").each(function() {
$(this).addClass('anchorLink');
$(this).bind('click', function(e) {
e.preventDefault();
//console.log('test');
anchor = $(this).attr('href').split('#')[1];
pageOffset = $("#"+anchor).offset();
scrollPos = pageOffset.top - viewOffset;
$('html, body').animate({scrollTop:scrollPos}, '500');
})
});
});
Ну, я ищу все ссылки, содержащие #. Так что я знаю, что эти элементы являются якорями, которые переходят на другие элементы. Я не хочу, чтобы моя страница перепрыгивала, а скорее плавно прокручиваю к этому элементу с помощью этого #id
Это прекрасно работает, когда я использую bind('click', ...
для обычных элементов страницы, которые были загружены при открытии страницы. Это не работает для якорей, которые были загружены через AJAX! Если я изменю bind
на live
, то ничего не изменится для загруженных ajax элементов - они все равно не будут работать. Однако обычные якоря, которые всегда были на странице, также не запускают функцию. Так что с live () ничего не работает!