Задать вопрос

Прокрутка к слову из поиска?

На сайте есть поиск , который подсвечивает все слова , которые были введены в поле поиска. Реализовано это с помощью библиотеки highlights.js и скрипта:
$(function() {
    $('#text-search').bind('keyup change', function(ev) {
        // pull in the new value
        var searchTerm = $(this).val();
        // remove any old highlighted terms
        $('body').removeHighlight();
        // disable highlighting if empty
        if ( searchTerm ) {
            // highlight the new term
            $('body').highlight( searchTerm );
        }
    });
});

Как сделать так, чтобы слово не только подсвечивалось, но и после нажатия клавиши enter происходила прокрутка к этому слову? Что то вроде ctrl+F получается.
  • Вопрос задан
  • 83 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
lidacriss
@lidacriss
wtf
$(function() {
	$('#text-search').unbind().bind('keyup change', function(e){
		if (e.keyCode == 13){
			e.preventDefault();
			console.log($('span.highlight.viewed'));
			var highlights = $('span.highlight');
			if (highlights.length){
				var viewed = $('span.highlight.viewed');
				if (viewed.length >= highlights.length){
					viewed.removeClass('viewed');
					viewed = $('span.highlight.viewed');
				}
				if (viewed.length < highlights.length){
					var noViewed = highlights.parent().find('span.highlight:not([class*="viewed"])');
					var firstNoViewed = noViewed.first();
					var searchPosition = firstNoViewed.offset();
					var searchPositionTop = searchPosition.top;
					var windowHeight = window.innerHeight;
					var windowHeightHalf = windowHeight / 2;
					var scrollPosition = (searchPositionTop > windowHeightHalf) ? (searchPositionTop - windowHeightHalf) : 0;
					window.scrollTo(0, scrollPosition);
					firstNoViewed.addClass('viewed');
				}
			}
		} else {
			var searchTerm = $(this).val();
			$('body').removeHighlight();
			if (searchTerm){
				$('body').highlight(searchTerm);
			}
		}
	});
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы