Статьи

10+ удобных и повторно используемых фрагментов кода jQuery

С годами jQuery стал обязательным для каждого веб-разработчика. Это простой в использовании, быстрый и очень мощный. В этой статье я собрал серию из более 10 удобных фрагментов кода jQuery, которые вы можете сохранять и копировать для использования по своему усмотрению. Эти фрагменты очень легко адаптировать к вашему собственному сценарию.

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

Давайте начнем этот список с очень популярного и полезного фрагмента: эти 4 строки позволят вашим посетителям сгладить прокрутку вверх страницы, просто щелкнув ссылку (с  #topидентификатором), расположенную внизу вашей страницы.

$("a[href='#top']").click(function() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  return false;
});

Источник:  http://stackoverflow.com/questions/1144805/how-do-i-scroll-to-the-top-of-the-page-with-jquery/1145297#1145297

Клонировать заголовок таблицы в конец таблицы

Для лучшей читаемости ваших таблиц может быть хорошей идеей клонировать заголовок таблицы в нижней части таблицы. Это то, что делает этот полезный фрагмент.

var $tfoot = $('<tfoot></tfoot>');
$($('thead').clone(true, true).children().get().reverse()).each(function(){
    $tfoot.append($(this));
});
$tfoot.insertAfter('table thead');

Источник:  http://lunart.com.ua/jquery

Загрузить внешний контент

Вам нужно добавить внешний контент в  div? Это довольно легко сделать с помощью jQuery, как показано в примере ниже:

$("#content").load("somefile.html", function(response, status, xhr) {
  // error handling
  if(status == "error") {
    $("#content").html("An error occured: " + xhr.status + " " + xhr.statusText);
  }
});

Источник:  http://api.jquery.com/load/

Столбцы равной высоты

Когда вы используете столбцы для отображения контента на вашем сайте, определенно будет лучше, если столбцы имеют одинаковую высоту. Код ниже возьмет все  div элементы .col класса и отрегулирует их высоту в соответствии с большим элементом. Супер полезно!

var maxheight = 0;
$("div.col").each(function(){
  if($(this).height() > maxheight) { maxheight = $(this).height(); }
});

$("div.col").height(maxheight);

Источник: http://web.enavu.com/tutorials/top-10-jquery-snippets-incключ-jquery-1-4/

Столовые полосы (зебра)

При отображении данных в таблице чередование цветов в каждой строке определенно повышает удобочитаемость. Вот фрагмент кода для автоматического добавления класса CSS в одну строку из двух.

$(document).ready(function(){                             
     $("table tr:even").addClass('stripe');
});

Источник: http://www.alovefordesign.com/5-jquery-must-have-code-snippets/

Частичное обновление страницы

Если вам нужно обновить только часть страницы, приведенные ниже 3 строки кода определенно помогут. В этом примере  #refresh div автоматически обновляется каждые 10 секунд.

setInterval(function() {
$("#refresh").load(location.href+" #refresh>*","");
}, 10000); // milliseconds to wait

Источник: http://web.enavu.com/tutorials/top-10-jquery-snippets-incключ-jquery-1-4/

Предварительная загрузка изображений

jQuery упрощает предварительную загрузку изображений в фоновом режиме, поэтому посетителям не придется ждать вечно, когда они захотят отобразить изображение. Этот код готов к использованию, просто обновите список изображений в строке 8.

$.preloadImages = function() {
       for(var i = 0; i<arguments.length; i++) {
               $("<img />").attr("src", arguments[i]);
       }
}

$(document).ready(function() {
       $.preloadImages("hoverimage1.jpg","hoverimage2.jpg");
});

Источник:  http://css-tricks.com/snippets/jquery/image-preloader/

Открыть внешние ссылки в новой вкладке / окне

target="blank" Атрибут позволяет принудительно открытие ссылок в новых окнах. Хотя важно открывать внешние ссылки в новой вкладке или окне, в том же окне обязательно должны быть открыты те же доменные ссылки.

Этот код определяет, является ли ссылка внешней, и, если да, добавляет  target="blank" к ней атрибут.

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if(!a.test(this.href)) {
       $(this).click(function(event) {
           event.preventDefault();
           event.stopPropagation();
           window.open(this.href, '_blank');
       });
   }
});

Источник:  http://css-tricks.com/snippets/jquery/open-external-links-in-new-window/

Div полная ширина / высота области просмотра с jQuery

Этот удобный фрагмент кода позволяет вам создать полный div ширины / высоты в соответствии с областью просмотра. Код также обрабатывает изменение размера окна. Отлично подходит для модальных диалогов или всплывающих окон.

// global vars
var winWidth = $(window).width();
var winHeight = $(window).height();

// set initial div height / width
$('div').css({
    'width': winWidth,
'height': winHeight,
});

// make sure div stays full width/height on resize
$(window).resize(function(){
    $('div').css({
    'width': winWidth,
    'height': winHeight,
});
});

Источник: http://www.jqueryrain.com/2013/03/div-full-widthheight-of-viewport-with-jquery/

Проверить надежность пароля

Когда вы позволяете пользователям определять свой пароль, обычно полезно указать, насколько надежным является пароль. Это именно то, что делает этот код.

Сначала предположим этот HTML:

<input type="password" name="pass" id="pass" />
<span id="passstrength"></span>

And here is the corresponding jQuery code. The entered password will be evaluated using regular expressions and a message will be returned to the user to let him know if his chosen password is strong, medium, weak, or too short.

$('#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;
});

Source: http://css-tricks.com/snippets/jquery/password-strength/

Image resizing using jQuery

Although you should resize your images on server side (using PHP and GD for example) it can be useful to be able to resize images using jQuery. Here’s a snippet to do it.

$(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
});

Source:http://snipplr.com/view/62552/mage-resize/

Automatically load content on scroll

Some websites such as Twitter loads content on scroll. Which means that all content is dynamically loaded on a single page as long as you scroll down.

Here’s how you can replicate this effect on your website:

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);
});

Source:http://fatfolderdesign.com/173/content-load-on-scroll-with-jquery

Check if an image is loaded

Here’s a snippet I often use when working with images, as it is the best way to know if an image is loaded or not.

var imgsrc = 'img/image1.png';
$('<img/>').load(function () {
    alert('image loaded');
}).error(function () {
    alert('error loading image');
}).attr('src', imgsrc);

Source:http://tympanus.net/codrops/2010/01/05/some-useful…

Sort a list alphabetically

On some cases, it can be very useful a sort a long list by alphabetical order. This snippet take any list and order its element alphabetically.

$(function() {
    $.fn.sortList = function() {
    var mylist = $(this);
    var listitems = $('li', mylist).get();
    listitems.sort(function(a, b) {
        var compA = $(a).text().toUpperCase();
        var compB = $(b).text().toUpperCase();
        return (compA < compB) ? -1 : 1;
    });
    $.each(listitems, function(i, itm) {
        mylist.append(itm);
    });
   }

    $("ul#demoOne").sortList();

});

Source: http://stackoverflow.com/questions/13394796/javascript-jquery-to-sort-alphabetically-a-list-with-anchors