Полезные jQuery сниппеты

13-07-09 JavaScript jQuery 0

jQuery — очень мощный инструмент для front-end разработки.

В этой статье представлены полезные jQuery сниппеты, которые можно применить в своих проектах.

Плавная прокрутка при нажатии на ссылку

Всегда приятно, если на сайте есть кнопка, которая позволяет прокручивать страницу вверх.

С помощью jQuery легко сделать ссылку, при нажатии на которую страница будет прокручена до нужного вам места.

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

// HTML:
// <h1 id="anchor">До этого заголовка будет прокрутка</h1>
// <p><a href="#anchor">Back to Top</a></p>

$(document).ready(function() {

	$("a.topLink").click(function() {
		$("html, body").animate({
			scrollTop: $($(this).attr("href")).offset().top + "px"
		}, {
			duration: 500,
			easing: "swing"
		});
		return false;
	});

});

Изменение размеров изображения с помощью jQuery

Обычно изменять размеры изображения — это обязанность сервера (PHP GD например), но иногда бывает полезно изменить размеры картинки, используя jQuery. Вот код, который позволит это сделать:

$(window).bind("load", function() {
	// IMAGE RESIZE
	$('#product_cat_list img').each(function() {
		var maxWidth = 120;
		var maxHeight = 120;
		var ratio = 0;
		var width = $(this).width();
		var height = $(this).height();

		if(width > maxWidth){
			ratio = maxWidth / width;
			$(this).css("width", maxWidth);
			$(this).css("height", height * ratio);
			height = height * ratio;
		}
		var width = $(this).width();
		var height = $(this).height();
		if(height > maxHeight){
			ratio = maxHeight / height;
			$(this).css("height", maxHeight);
			$(this).css("width", width * ratio);
			width = width * ratio;
		}
	});
	//$("#contentpage img").show();
	// IMAGE RESIZE
});

Автоматическая загрузка контента при скролле

Некоторые сайты, Facebook например, автоматически подгружают контент, когда пользователь прокручивает страницу вниз. jQuery для динамической загрузки страницы:

var loading = false;
$(window).scroll(function(){
	if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
		if(loading == false){
			loading = true;
			$('#loadingbar').css("display","block");
			$.get("load.php?start="+$('#loaded_max').val(), function(loaded){
				$('body').append(loaded);
				$('#loaded_max').val(parseInt($('#loaded_max').val())+50);
				$('#loadingbar').css("display","none");
				loading = false;
			});
		}
	}
});

$(document).ready(function() {
	$('#loaded_max').val(50);
});

Проверка надежности пароля с помощью jQuery

При создании форм полезно предоставить возможность проверки данных перед отправкой их на сервер. Этот сниппет использует регулярное выражение для проверки надежности пароля. При этом нельзя полностью доверять фронт-энду, не забывайте проверить данные на сервере!

$('#pass').keyup(function(e) {
     var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g");
     var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
     var enoughRegex = new RegExp("(?=.{6,}).*", "g");
     if (false == enoughRegex.test($(this).val())) {
             $('#passstrength').html('More Characters');
     } else if (strongRegex.test($(this).val())) {
             $('#passstrength').className = 'ok';
             $('#passstrength').html('Strong!');
     } else if (mediumRegex.test($(this).val())) {
             $('#passstrength').className = 'alert';
             $('#passstrength').html('Medium!');
     } else {
             $('#passstrength').className = 'error';
             $('#passstrength').html('Weak!');
     }
     return true;
});

Выравнивание div’ов по высоте

Выровнять высоту div’ов с помощью чистого CSS невозможно (ну или очень сложно), на jQuery сделать это гораздо проще. Следующий код автоматически выровняет высоту div элементов по самому высокому.

var maxHeight = 0;

$("div").each(function(){
   if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
});

$("div").height(maxHeight);

Делаем IE6 совместимым с PNG

Можно долго говорить о том как плох IE6, но верстать кросс-браузерно все равно надо. Хоть IE6 уже почти никто не использует, может возникнуть необходимость сделать IE6-совместимый сайт. Следующий код позволит IE6 справиться с прозрачностью PNG.

Просто добавьте  класс .pngfix ко всему, что надо исправить или выберите другой селектор.

$('.pngfix').each( function() {
   $(this).attr('writing-mode', 'tb-rl');
   $(this).css('background-image', 'none');
   $(this).css( 'filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="path/to/image.png",sizingMethod="scale")');
});

Парсинг json с помощью jQuery

Эффективный способ парсить данные JSON и отображать на странице.

function parseJson(){
	//Сначала создаем JSON объект (в данном случае из файла)
	//Так же определим коллбэк для обработки данных
	$.getJSON('hcj.json',getPosts);

	function getPosts(data){

		for(var i = 0; i < 5; i++){
			var strPost = '<h2>'
				      + data.posts[i].title
				      + '</h2>'
				      + '<p>'
				      + data.posts[i].excerpt
				      + '</p>'
				      + '<a href="'
				      + data.posts[i].url
				      + '" title="Read '
				      + data.posts[i].title
				      + '">Read ></a>';

			$('body').append(strPost);

		}
	}

}

$(document).ready(function(){
	parseJson();
});

Разные цвета строк

В больших списках или таблицах разные цвета строк сильно улучшают читаемость. Немного кода jQuery может решить проблему. Можно использовать любые html элементы tdtrli, и т.д.

//jquery
  $('div:odd').css("background-color", "#F4F4F8");
  $('div:even').css("background-color", "#EFF1F1");

//html example
<div>Row 1</div>
<div>Row 2</div>
<div>Row 3</div>
<div>Row 4</div>

Хочешь получать статьи на почту?

Подпишись на обновления!
* Ваш email не будет разглашен/продан. Вы сможете отписаться в любое время.

Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *