<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fix Blog &#187; JQuery</title>
	<atom:link href="http://fixblog.ru/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://fixblog.ru</link>
	<description>в помощь веб-мастерам</description>
	<lastBuildDate>Fri, 03 Jun 2011 05:32:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jquery ajax</title>
		<link>http://fixblog.ru/2010/04/14/jquery-ajax/</link>
		<comments>http://fixblog.ru/2010/04/14/jquery-ajax/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:07:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=348</guid>
		<description><![CDATA[Web 2.0 неожиданно возродил технологию под названием XMLHttpRequest, появившуюся еще в 2000 году. Эта технология позволяет обращаться к серверу без перезагрузки текущей страницы. На данный момент можно считать, что все современные браузеры реализуют эту технологию в объеме, достаточном для безболезненного ее использования. В новой реинкарнации триумвират XMLHttpRequest, JavaScript и DOM называется AJAX.
Пуристы Web-технологий различают следующие [...]]]></description>
			<content:encoded><![CDATA[<p>Web 2.0 неожиданно возродил технологию под названием XMLHttpRequest, появившуюся еще в 2000 году. Эта технология позволяет обращаться к серверу без перезагрузки текущей страницы. На данный момент можно считать, что все современные браузеры реализуют эту технологию в объеме, достаточном для безболезненного ее использования. В новой реинкарнации триумвират XMLHttpRequest, JavaScript и DOM называется AJAX.</p>
<p><span id="more-348"></span>Пуристы Web-технологий различают следующие подвиды этой технологии:</p>
<p>* AJAX – Asynchronous JavaScript and XML, асинхронный Javascript и XML. В ответ на запрос с клиента сервер отвечает правильно сфоримированным XML-документом.<br />
* AJAH – Asynchronous JavaScript and HTML, асинхронный Javascript и HTML. В ответ на запрос с клиента сервер отвечает уже сгенерированным HTML-документом или его частью.<br />
* AHAH – Asynchronous HTML and HTTP, асинхронный HTML и HTTP. То же самое, что и AJAH.<br />
* AJAJ – JavaScript and JSON, асинхронный Javascript и JSON. В ответ на запрос с клиента сервер отвечает правильной записью объекта Javascript в формате JSON (http://json.org).</p>
<p>jQuery предлагает реализацию всех трех подвидов технологии AJAX и еще один, AJAJs – все те же и Javascript. Теперь обо всем этом подробнее.</p>
<p>Базовыми функциями для работы с AJAX являются post() и get() (есть еще более низкоуровневая, ajax(), но мы ее не будем рассматривать):</p>
<p><em>$.post(url[, params[, callback]])<br />
$.get(url[, params[, callback]])</em></p>
<p>Здесь:</p>
<p>* url – адрес страницы, на которую будет отправлен запрос;<br />
* params – параметры, передаваемые в запросе в виде пар «ключ : значение»;<br />
* callback – функция, которая будет вызвана в случае успешного завершения вызова.</p>
<p>Пример:</p>
<p><em>$.post(<br />
&#8216;/ajaxtest.php&#8217;,<br />
{<br />
type: "test-request",<br />
param1: "param1&#8243;,<br />
param2: 2<br />
},<br />
onAjaxSuccess<br />
);<br />
function onAjaxSuccess(data)<br />
{<br />
// Здесь мы получаем данные, отправленные сервером<br />
alert(data);<br />
}</em></p>
<p>А что же на сервере? Вызов страницы при помощи технологии AJAX ничем не отличается от простого вызова страницы, например, путем открытия ее в браузере. То есть передаваемые параметры будут доступны на этой странице так же, как если бы они были переданы стандартными методами get или post. На сервере у нас может существовать, например, вот такой ajaxtest.php:</p>
<p><em>&lt;?php<br />
// Если страница вызвана с помощью .post(), переданные значения будут,<br />
// как всегда, доступны в глобальной переменной $_POST<br />
// Если страница вызвана с помощью .get, переданные значения будут,<br />
// как всегда, доступны в глобальной переменной $_GET</p>
<p>echo &#8216;text&#8217;;<br />
?&gt;</em></p>
<p>После того как ajaxtest.php отработает, в функцию onAjaxSuccess на клиенте будет передан текст «text». Обратите внимание на HTTP_X_REQUESTED_WITH. Этот HTTP-заголовок устанавливается jQuery во время запросов с помощью AJAX. Это помогает узнать, тип поступившего запроса и соответственно обрабатывать данные. Во всем остальном запрос через Аякс ничем не отличается от обычного запроса страницы у сервера.<br />
ПРИМЕЧАНИЕ</p>
<p>В различных библиотеках, особенно использующих шаблон MVC, часто необходимо знать, как была вызвана страница – открыли ее в браузере или запросили через AJAX? При запросе с помощью технологии AJAX устанавливается HTTP-заголовок HTTP_X_REQUESTED_WITH со значением “XmlHTTPRequest”. Таким образом, в РНР, например, можно узнать, вызвана ли страница с помощью AJAX так:</p>
<p><em>if($_SERVER['HTTP_X_REQUESTED_WITH'] == &#8216;XMLHttpRequest&#8217;)<br />
{<br />
// выполняем соответствующий код<br />
}</em></p>
<p>Теперь рассмотрим, как работать с четырьмя подвидами AJAX.<br />
AJAX</p>
<p>Если сервер на запрос возвращает заголовок Content-Type: text/xml и правильно сформированный XML-документ, то в функцию onAjaxSuccess будет передан уже готовый к употреблению DOM этого документа, с которым можно будет работать, используя методы jQuery. Пример:<br />
ajaxtest2.php:</p>
<p><em>&lt;?php<br />
header("Content-Type: text/xml; charset=utf-8&#8243;);<br />
?&gt;<br />
&lt;list&gt;<br />
&lt;item id="1&#8243;&gt;<br />
Item 1<br />
&lt;/item&gt;<br />
&lt;item id="2&#8243;&gt;<br />
Item 2<br />
&lt;/item&gt;<br />
&lt;/list&gt;</em></p>
<p>Наш JavaScript:</p>
<p><em>// Функцию post опускаем, написать ее не составляет труда<br />
function onAjaxSuccess(xml)<br />
{<br />
// Получаем коллекцию всех элементов item из пришедшего xml<br />
items = $("item", xml);</p>
<p>// Находим item с id="1&#8243;<br />
item = $("#1&#8243;, xml);</p>
<p>// или при помощи XPath<br />
item2 = $("item[@id='2']", xml);</p>
<p>// Извлекаем текст из элемента<br />
alert(item2.html());<br />
}</em></p>
<p>Как видите, работа с полученным с сервера ответов в виде XML ничем не отличается от работы с уже загруженным в браузер документом.<br />
<strong>AHAH</strong></p>
<p>Как уже было видно в первом примере с методом post(), если значение заголовка Content-Type – не «text/xml», ответ с сервера передается как есть, в текстовом виде. Поскольку обычно такой ответ сразу показывается на странице без дополнительной обработки, то нет смысла заводить отдельные функции вроде onAjaxSuccess. Для получения и отображения полученного с сервера HTML jQuery предоставляет метод load:</p>
<p><em>load(url[, params[, callback]]);</em></p>
<p>Этот метод прикрепляется к любому элементу на странице, в котором планируется показать ответ с сервера. После выполнения запроса ответ с сервера автоматически запишется в соответствующий элемент:</p>
<p><em>$("#mydiv").load("/ajaxtest.php");</em></p>
<p>Мы выполняем запрос к файлу из первого примера про AJAX. После выполнения запроса в элемент с id="mydiv" будет записано слово «text».<br />
AJAJ</p>
<p>Многие разработчики, столкнувшиеся с технологией AJAX, не любят передавать на клиент XML. Объясняется это тем, что XML может быть довольно большим по размеру, и существуют дополнительные трудности при разборе его структуры на клиенте. Благодаря jQuery, разбор XML на клиенте не представляет никакой сложности. А если разработчики активно используют AHAH, то и размеры передаваемого документа перестают быть решающим аргументом.</p>
<p>И все же многие предпочтут использовать JSON. JSON – это способ записи данных, который позволяет прогнать эту запись через функцию eval() и получить полноценный Javascript-объект. Для работы с данными в таком формате jQuery предлагает метод $.getJSON:</p>
<p><em>getJSON(url, params, callback)</em></p>
<p>После выполнения запроса ответ с сервера прогоняется через функцию eval(), а полученный объект передается в функцию callback:<br />
ajaxtest3.php</p>
<p><em>&lt;?php<br />
header(&#8216;Content-Type: text/javascript; charset=utf-8&#8242;);<br />
?&gt;<br />
{<br />
params: &lt;?php echo $_REQUEST['params']; ?&gt;,<br />
response: &#8216;Наш ответ Чемберлену&#8217;<br />
}</p>
<p>Javascript:</p>
<p>$.getJSON(<br />
&#8216;/ajaxtest3.php&#8217;,<br />
{params: "text"},<br />
onAjaxSuccess<br />
);<br />
function onAjaxSuccess(obj)<br />
{<br />
alert(obj.params);<br />
alert(obj.response);<br />
}</em></p>
<p><strong>AJAJs</strong></p>
<p>Помимо трех вышеперечисленных способов получения данных с сервера jQuery предлагает еще один. С его помощью можно загрузить и выполнить любой сценарий Javascript с сервера. Для этого используется метод getScript:</p>
<p><em>getScript(url[, callback])</em></p>
<p>Пример:<br />
script.js</p>
<p><em>$("a").css("color", "#0F0&#8243;);</em></p>
<p>Наш Javascript:<br />
<em><br />
$.getScript(&#8216;/script.js&#8217;);</em></p>
<p>После выполнения этого метода будет загружен и выполнен сценарий script.js, который окрасит все ссылки на странице в зеленый цвет.</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/jquery-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>эффекты jquery</title>
		<link>http://fixblog.ru/2010/04/14/%d1%8d%d1%84%d1%84%d0%b5%d0%ba%d1%82%d1%8b-jquery/</link>
		<comments>http://fixblog.ru/2010/04/14/%d1%8d%d1%84%d1%84%d0%b5%d0%ba%d1%82%d1%8b-jquery/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:04:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=346</guid>
		<description><![CDATA[Метод animate является основой большинства, если не всех, эффектов jQuery и плагинов. Например, jQuery предлагает следующие методы для показа и скрытия элементов:
 * show([speed[, callback]]) – показать элемент;
* hide([speed[, callback]]) – скрыть элемент;
* fadeIn(speed[, callback]) – показать элемент путем изменения его прозрачности;
* fadeOut(speed[, callback]) – скрыть элемент путем изменения его прозрачности;
* slideDown(speed, callback) – показать [...]]]></description>
			<content:encoded><![CDATA[<p>Метод animate является основой большинства, если не всех, эффектов jQuery и плагинов. Например, jQuery предлагает следующие методы для показа и скрытия элементов:</p>
<p><span id="more-346"></span> <em>* show([speed[, callback]]) – показать элемент;<br />
* hide([speed[, callback]]) – скрыть элемент;<br />
* fadeIn(speed[, callback]) – показать элемент путем изменения его прозрачности;<br />
* fadeOut(speed[, callback]) – скрыть элемент путем изменения его прозрачности;<br />
* slideDown(speed, callback) – показать элемент, спустив его сверху;<br />
* slideUp(speed, callback) – показать элемент, подняв его снизу;</em></p>
<p>где</p>
<p>speed – скорость в миллисекундах или одно из "slow" (600 миллисекунд) или "fast" (200 миллисекунд);</p>
<p>callback – функция, которая будет вызвана после выполнения анимации.</p>
<p>Рассмотрим, например, реализацию функции show:</p>
<p><em>show: function(speed,callback){<br />
// находим в переданной нам коллекции скрытые элементы (см. врезку)<br />
var hidden = this.filter(":hidden");<br />
// если нам передана скорость, то вызываем метод animate<br />
if(speed)<br />
{<br />
hidden.animate(<br />
{<br />
height: "show",<br />
width: "show",<br />
opacity: "show"<br />
},<br />
speed,<br />
callback<br />
)<br />
}<br />
else<br />
{<br />
// иначе просто проходим по коллекции элементов и показываем их,<br />
// меняя стиль display с none на block<br />
hidden.each(<br />
function()<br />
{<br />
this.style.display = this.oldblock ? this.oldblock : "";<br />
if ( jQuery.css(this,"display") == "none" )<br />
this.style.display = "block";<br />
}<br />
);<br />
}<br />
return this;<br />
}</em></p>
<p>Скрытая мощь функции animate позволяет создавать поистине удивительные эффекты.</p>
<p>Необходимо также заметить, что все эффекты библиотеки jQuery применяются к элементам не сразу, а по очереди. То есть, предположим, что мы написали такой код:</p>
<p><em>for(i = 0; i &lt; 10; i++)<br />
{<br />
$("#my-div").animate({height: "show"}, 300);<br />
$("#my-div").animate({height: "hide"}, 300);<br />
}</em></p>
<p>В результате мы получим не беспорядочное моргание, пока двадцать эффектов борются за право показать/скрыть элемент «my-div», а плавный показ, потом сокрытие, потом снова показ – и так 20 раз. Обратите внимание, что очередь эффектов составляется поэлементно. То есть эффекты, примененные к разным элементам одновременно, будут выполняться одновременно.</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/%d1%8d%d1%84%d1%84%d0%b5%d0%ba%d1%82%d1%8b-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>animate jquery</title>
		<link>http://fixblog.ru/2010/04/14/animate-jquery/</link>
		<comments>http://fixblog.ru/2010/04/14/animate-jquery/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:00:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=342</guid>
		<description><![CDATA[Ключевой функцией, на которой базируются все остальные, является функция animate:
 
animate(params, speed, easing, callback);

Здесь:
* params – свойства, которые участвуют в анимации в виде пар {ключ: значение}. Например: {height: "show"} или {opacity: 50, width: 100, height: 200}.
* speed – скорость в миллисекундах.
* easing – замедлениие анимации (замедляется ли к концу, "easein", или, наоборот, ускоряется, "easeout". Дополнительные [...]]]></description>
			<content:encoded><![CDATA[<p>Ключевой функцией, на которой базируются все остальные, является функция animate:<br />
<span id="more-342"></span> <em><br />
animate(params, speed, easing, callback);<br />
</em><br />
Здесь:</p>
<p>* params – свойства, которые участвуют в анимации в виде пар {ключ: значение}. Например: {height: "show"} или {opacity: 50, width: 100, height: 200}.<br />
* speed – скорость в миллисекундах.<br />
* easing – замедлениие анимации (замедляется ли к концу, "easein", или, наоборот, ускоряется, "easeout". Дополнительные типы доступны в модулях расширения).<br />
* callback – функция, которая будет вызвана после завершения анимации.</p>
<p>Пример.</p>
<p>Пусть у нас есть элемент div с каким-нибудь текстом. Мы хотим скрыть этот текст, заменить новым, и показать обновленный текст.</p>
<p><em>$("#mydiv")<br />
.animate({height: "hide"}, 300)<br />
.text("Новый текст")<br />
.animate({height: "show"}, 300);</em></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/animate-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>autocomplete jquery</title>
		<link>http://fixblog.ru/2010/04/14/autocomplete-jquery/</link>
		<comments>http://fixblog.ru/2010/04/14/autocomplete-jquery/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 15:57:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=340</guid>
		<description><![CDATA[Если Вы пробовали что-то найти в Google, то наверняка знаете, что после ввода символа в текстовое поле появляется выпадающий список, который содержит десяток строк со словами, начальные символы которых совпадают с теми символами, что Вы уже успели ввести. Так работает Google Suggest. Почему бы не сделать так же на своем сайте? Ведь это удобно. К [...]]]></description>
			<content:encoded><![CDATA[<p>Если Вы пробовали что-то найти в Google, то наверняка знаете, что после ввода символа в текстовое поле появляется выпадающий список, который содержит десяток строк со словами, начальные символы которых совпадают с теми символами, что Вы уже успели ввести. Так работает Google Suggest. Почему бы не сделать так же на своем сайте? Ведь это удобно. К тому же с библиотекой jQuery это не так уж и сложно…<br />
<span id="more-340"></span><br />
Вы можете скачать исходный код примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p>
<p>Сначала потребуется только подключить библиотеку jQuery и файл query.autocomplete.js в разделе HEAD нужной страницы.<br />
<em>&lt;script type="text/javascript" src="js/jquery-1.2.1.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="js/jquery.autocomplete.js"&gt;&lt;/script&gt;</em></p>
<p>Учтите, что файл jquery.autocomplete.js использует имена классов (начинаются с ac_), но если Вы захотите по каким-то причинам изменить эти имена – это тоже можно будет довольно легко сделать.</p>
<p>Что касается HTML-кода, то естественно нужно описать поле для ввода текста:<br />
<em>&lt;input id="example" type="text" /&gt;</em></p>
<p>А вот использовать jquery.autocomplete.js можно двумя разными способами.</p>
<p>Способ первый:<br />
Если объем данных не очень большой, и данные не будут изменяться, то их можно поместить непосредственно на странице, как и сделано в примере в текстовом поле слева.<br />
<em>&lt;script type="text/javascript"&gt;<br />
$(document).ready(function(){<br />
$("#example").autocompleteArray([<br />
"Магадан",<br />
"Магас",<br />
"Магнитогорск",<br />
"Майкоп",<br />
........<br />
"Муром",<br />
"Мценск",<br />
"Мыски",<br />
"Мытищи",<br />
"Мышкин"<br />
],<br />
{<br />
delay:10,<br />
minChars:1,<br />
matchSubset:1,<br />
autoFill:true,<br />
maxItemsToShow:10<br />
}<br />
);<br />
});<br />
&lt;/script&gt;</em></p>
<p>Способ второй:<br />
Если данные большого объема, и/или часто изменяются, то необходимо предусмотреть обработку этих данных на сервере (для примера выбран PHP). jquery.autocomplete.js предусматривает отправку GET-запроса с параметром q, значением которого являются введенные символы. Именно так в примере работает текстовое поле справа.<br />
<em>&lt;script type="text/javascript"&gt;<br />
$(document).ready(function(){<br />
$("#example2&#8243;).autocomplete("autocomplete.php", {<br />
delay:10,<br />
minChars:2,<br />
matchSubset:1,<br />
autoFill:true,<br />
matchContains:1,<br />
cacheLength:10,<br />
selectFirst:true,<br />
formatItem:liFormat,<br />
maxItemsToShow:10,<br />
onItemSelect:selectItem<br />
});<br />
});<br />
&lt;/script&gt;</em></p>
<p>В этих примерах, помимо данных (в первом случае) и URL обработчика (во втором случае) мы передаем некоторые опции. Список опций приведен ниже:</p>
<p>autoFill – когда Вы начинаете вводить текст, в поле ввода будет подставлено (и выделено) первое подходящее значение из списка. Если Вы продолжаете вводить текст, в поле ввода и далее будет подставляться подходящее значение, но уже с учетом введенного Вами текста. (По умолчанию: false).</p>
<p>inputClass – этот класс будет добавлен к элементу ввода. (По умолчанию: «ac_input»).</p>
<p>resultsClass – класс для UL, который будет содержать элементы результата (элементы LI). (По умолчанию: «ac_results»).</p>
<p>loadingClass – класс для элемента ввода, в то время, когда происходит обработка данных на сервере. (По умолчанию: «ac_loading»).</p>
<p>lineSeparator – символ, который разделяет строки в данных, возвращаемых сервером. (По умолчанию: «\n»).</p>
<p>cellSeparator – символ, который разделяет «ячейки» в строках данных, возвращаемых сервером. (По умолчанию: «|»).</p>
<p>minChars – минимальное число символов, которое пользователь должен напечатать перед тем, как будет активизирван запрос. (По умолчанию: 1).</p>
<p>delay – задержка в миллисекундах. Если в течение этого времени пользователь не нажимал клавиши, активизируется запрос. Если используется локальный запрос (к данным, находящимся непосредственно в файле), задержку можно сильно уменьшить. Например до 40ms. (По умолчанию: 400).</p>
<p>cacheLength – число ответов от сервера, сохраняемых в кэше. Если установлено в 1 – кэширование данных отключено. Никогда не устанавливайте меньше единицы. (По умолчанию: 1).</p>
<p>matchSubset – использовать ли кэш для уточнения запросов. Использование этой опции может сильно снизить нагрузку на сервер и увеличить производительность. Не забудьте при этом еще и установить для cacheLength значение побольше. Например 10. (По умолчанию: 1).</p>
<p>matchCase – использовать ли сравнение чувствительное к регистру символов (только если Вы используете кэширование). (По умолчанию: 0).</p>
<p>maxItemsToShow – ограничивает число результатов, которые будут показаны в выпадающем списке. Если набор данных содержит сотни элементов, может быть неудобно показывать весь список пользователю. Рекомендованное значение 10. (По умолчанию: -1).</p>
<p>extraParams – дополнительные параметры, которые могут быть переданы на сервер. Если Вы напишете {page:4}, то строка запроса к обработчику на сервере будет сформирована следующим образом: my_handler.php?q=foo&amp;page=4 (По умолчанию: {}).</p>
<p>width – устанавливает ширину выпадающего списка. По умолчанию ширина выпадающего списка определена шириной элемента ввода. Однако, если ширина элемента ввода небольшая, а строки выпадающего списка содержат большое количество символов – эта опция вполне может пригодиться. (По умолчанию: 0).</p>
<p>selectFirst – если установить в true, то по нажатию клавиши Tab или Enter будет выбрано то значение, которое в данный момент установлено в элементе ввода. Если же имеется выбранный вручную («подсвеченный») результат из выпадающего списка, то будет выбран именно он. (По умолчанию: false).</p>
<p>selectOnly – если установить в true и в выпадающем списке только одно значение, оно будет выбрано по нажатию клавиши Tab или Enter, даже если этот пункт не был выбран пользователем с помощью клавиатуры или указателя мыши. Заметьте, что эта опция отменяет действие опции selectFirst. (По умолчанию: false).</p>
<p>formatItem – JavaScript функция, которая поможет обеспечить дополнительную разметку элементов выпадающего списка. Функция будет вызываться для каждого элемента LI. Возвращаемые от сервера данные могут быть отображены в элементах LI выпадающего списка (см. второй пример). Принимает три параметра: строка результата, позиция строки в списке результатов, общее число элементов в списке результатов. (По умолчанию: none).</p>
<p>onItemSelect – JavaScript функция, которая будет вызвана, когда элемент списка выбран. Принимает единственный параметр – выбранный элемент LI. Выбранный элемент будет иметь дополнительный атрибут «extra», значением которого будет являться массив всех ячеек строки, которая была получена в качестве ответа от сервера. (По умолчанию: none).</p>
<p>Последние две опции весьма важны, если Вы хотите сделать действительно удобный и полезный элемент интерфейса, поэтому приведу примеры.<br />
function liFormat (row, i, num) {<br />
var result = row[0] + "&lt;em&gt;" +<br />
row[1] + " тыс.чел.&lt;/em&gt;";<br />
return result;<br />
}</p>
<p>В опции formatItem мы определили имя вызываемой функции – liFormat, а сама функция просто формирует строку, которая будет вставлена в соответствующий элемент LI. Строка содержит название поселка и элемент em, в который выводится количество проживающих там, в тысячах человек. Элемент em имеет класс qnt, с помощью которого, используя CSS, мы сдвигаем этот элемент вправо, немного уменьшаем размер шрифта и делаем сам шрифт зеленого цвета.</p>
<p>Следующий пример для опции onItemSelect:<br />
<em>function selectItem(li) {<br />
if( li == null ) var sValue = "Ничего не выбрано!";<br />
if( !!li.extra ) var sValue = li.extra[2];<br />
else var sValue = li.selectValue;<br />
alert("Выбрана запись с ID: " + sValue);<br />
}</em></p>
<p>Здесь видно как можно работать со значениями атрибута «extra» выбранного элемента LI. В примере мы выводим в alert значение идентификатора для записи из нашей тестовой базы.</p>
<p>Нам осталось только разобрать те действия, которые будут выполняться на стороне сервера. Как Вы наверное помните, мы выбрали для этого PHP. Вспомним также, что на сервер передается GET-запрос с параметром q, содержащим уже введенные пользователем символы. Сам код Вы сможете посмотреть, скачав файл примера.</p>
<p>Весь код мы будем выполнять только в случае существования XMLHttpRequest, только если передан GET-запрос с параметром q. Для примера используется текстовый файл, в котором содержится база данных. Вот фрагмент этого файла:<br />
<em>1:Пашковский:Краснодарский край:43,0<br />
2:Горячеводский:Ставропольский край:34,4<br />
3:Калинино:Краснодарский край:34,1<br />
4:Приволжский:Саратовская область:32,0<br />
. . . . . . . . . . . . . . . . . . .<br />
268:Залари:Иркутская область:10,0<br />
269:Октябрьский:Пермский край:10,0<br />
270:Ишеевка:Ульяновская область:10,0<br />
271:Жешарт:Республика Коми:10,0<br />
272:Прохоровка:Белгородская область:10,0</em></p>
<p>Мы читаем этот файл в массив, а затем в цикле перебираем все строки, в свою очередь разбивая каждую из них в массив, к элементу под номером один (название поселка) которого обращаемся для поиска соответствия с переданным GET-запросом. Если соответствие будет найдена выводим информацию, правда в несколько ином порядке, чем она хранилась в файле.</p>
<p>Такой подход выбран во-первых, потому что это пример, который должен быть очень просто воспроизведен на любом другом сайте, и во-вторых, чтобы при очень небольшом объеме данных дать почувствовать тот момент, когда запрос выполняется.</p>
<p>Вот собственно и все, обращу разве Ваше внимание на то, что для работы со строками использую мультибайтовые строковые функции.</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/autocomplete-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>всплывающие подсказки</title>
		<link>http://fixblog.ru/2010/04/14/%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b7%d0%ba%d0%b8/</link>
		<comments>http://fixblog.ru/2010/04/14/%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b7%d0%ba%d0%b8/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:56:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=337</guid>
		<description><![CDATA[Или как их еще называют &#8211; баблы.
Код пузыря и объекта, при наведении курсора на который будет появляться подсказка.
&#60;div&#62;
&#60;div id="download"&#62;Наведи на меня курсор&#60;/div&#62;
&#60;table style="opacity: 0; top: -50px; left: -33px; display: none;" id="dpop"&#62;
&#60;tbody&#62;&#60;tr&#62;
&#60;td id="topleft"&#62;&#60;/td&#62;
&#60;td&#62;&#60;/td&#62;
&#60;td id="topright"&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td&#62;&#60;/td&#62;
&#60;td&#62;Вот здесь пишем текст&#60;/td&#62;
&#60;td&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td id="bottomleft"&#62;&#60;/td&#62;
&#60;td&#62;&#60;img alt="popup tail" src="files/bubble-tail2.png" height="29&#8243; width="30&#8243; /&#62;&#60;/td&#62;
&#60;td id="bottomright"&#62;&#60;/td&#62;
&#60;/tr&#62;
&#60;/tbody&#62;&#60;/table&#62;
&#60;/div&#62;
CSS
Теперь прописываем стили всем элементам, при этом делаем так, чтобы при отключенных [...]]]></description>
			<content:encoded><![CDATA[<p>Или как их еще называют &#8211; баблы.</p>
<p><span id="more-337"></span>Код пузыря и объекта, при наведении курсора на который будет появляться подсказка.</p>
<p><em>&lt;div&gt;<br />
&lt;div id="download"&gt;Наведи на меня курсор&lt;/div&gt;<br />
&lt;table style="opacity: 0; top: -50px; left: -33px; display: none;" id="dpop"&gt;<br />
&lt;tbody&gt;&lt;tr&gt;<br />
&lt;td id="topleft"&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;/td&gt;<br />
&lt;td id="topright"&gt;&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td&gt;&lt;/td&gt;<br />
&lt;td&gt;Вот здесь пишем текст&lt;/td&gt;<br />
&lt;td&gt;&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td id="bottomleft"&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;img alt="popup tail" src="files/bubble-tail2.png" height="29&#8243; width="30&#8243; /&gt;&lt;/td&gt;<br />
&lt;td id="bottomright"&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/tbody&gt;&lt;/table&gt;<br />
&lt;/div&gt;</em></p>
<p><strong>CSS</strong></p>
<p>Теперь прописываем стили всем элементам, при этом делаем так, чтобы при отключенных скриптах ничего не плыло:</p>
<p><em>.bubbleInfo {<br />
position: relative;<br />
top: 150px;<br />
left: 100px;<br />
width: 500px;<br />
}<br />
.trigger {<br />
position: absolute;<br />
}</p>
<p>.popup {<br />
position: absolute;<br />
display: none;<br />
z-index: 50;<br />
border-collapse: collapse;<br />
font-size: .8em;<br />
}</p>
<p>.popup td.corner {<br />
height: 15px;<br />
width: 19px;<br />
}</p>
<p>.popup td#topleft {<br />
background-image: url(files/bubble-1.png);<br />
}</p>
<p>.popup td.top {<br />
background-image: url(files/bubble-2.png);<br />
}</p>
<p>.popup td#topright {<br />
background-image: url(files/bubble-3.png);<br />
}</p>
<p>.popup td.left {<br />
background-image: url(files/bubble-4.png);<br />
}</p>
<p>.popup td.right {<br />
background-image: url(files/bubble-5.png);<br />
}</p>
<p>.popup td#bottomleft {<br />
background-image: url(files/bubble-6.png);<br />
}</p>
<p>.popup td.bottom {<br />
background-image: url(files/bubble-7.png);<br />
text-align: center;<br />
}</p>
<p>.popup td.bottom img {<br />
display: block;<br />
margin: 0 auto;<br />
}</p>
<p>.popup td#bottomright {<br />
background-image: url(files/bubble-8.png);<br />
}</p>
<p></em><strong>jQuery</strong></p>
<p>Теперь сам код, который реализовывает эту прикольную анимацию.<em></p>
<p>$(function () {<br />
$(&#8216;.bubbleInfo&#8217;).each(function () {<br />
var distance = 10;<br />
var time = 250;<br />
var hideDelay = 500;</p>
<p>var hideDelayTimer = null;</p>
<p>var beingShown = false;<br />
var shown = false;<br />
var trigger = $(&#8216;.trigger&#8217;, this);<br />
var info = $(&#8216;.popup&#8217;, this).css(&#8216;opacity&#8217;, 0);</p>
<p>$([trigger.get(0), info.get(0)]).mouseover(function () {<br />
if (hideDelayTimer) clearTimeout(hideDelayTimer);<br />
if (beingShown || shown) {<br />
return;<br />
} else {<br />
beingShown = true;</p>
<p>info.css({<br />
top: -40,<br />
left: -33,<br />
display: &#8216;block&#8217;<br />
}).animate({<br />
top: &#8216;-=&#8217; + distance + &#8216;px&#8217;,<br />
opacity: 1<br />
}, time, &#8217;swing&#8217;, function() {<br />
beingShown = false;<br />
shown = true;<br />
});<br />
}</p>
<p>return false;<br />
}).mouseout(function () {<br />
if (hideDelayTimer) clearTimeout(hideDelayTimer);<br />
hideDelayTimer = setTimeout(function () {<br />
hideDelayTimer = null;<br />
info.animate({<br />
top: &#8216;-=&#8217; + distance + &#8216;px&#8217;,<br />
opacity: 0<br />
}, time, &#8217;swing&#8217;, function () {<br />
shown = false;<br />
info.css(&#8216;display&#8217;, &#8216;none&#8217;);<br />
});</p>
<p>}, hideDelay);</p>
<p>return false;<br />
});<br />
});<br />
});</em></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b7%d0%ba%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery всплывающее окно</title>
		<link>http://fixblog.ru/2010/04/14/jquery-%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b5%d0%b5-%d0%be%d0%ba%d0%bd%d0%be/</link>
		<comments>http://fixblog.ru/2010/04/14/jquery-%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b5%d0%b5-%d0%be%d0%ba%d0%bd%d0%be/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:44:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=334</guid>
		<description><![CDATA[Итак, перед нами очередная очень распространенная задача — по клику на эскиз изображения (который фактически является ссылкой) красиво развернуть оригинальную картинку. Красиво — это в нашем случае что-то отличное от target="_blank" и с каким-нибудь «вау-эффектом».
Все скрипты, выполняющие данную задачу принято называть лайтбоксами (lightbox). В поисках неплохих решений, мною были запытаны более двух десятков скриптов, но [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, перед нами очередная очень распространенная задача — по клику на эскиз изображения (который фактически является ссылкой) красиво развернуть оригинальную картинку. Красиво — это в нашем случае что-то отличное от target="_blank" и с каким-нибудь «вау-эффектом».<br />
Все скрипты, выполняющие данную задачу принято называть лайтбоксами (lightbox). В поисках неплохих решений, мною были запытаны более двух десятков скриптов, но в результате в копилку были включены только нижеследующие.</p>
<p><a href="http://fancy.klade.lv">Fancy Box</p>
<p></a>Скрипт представляет собой плагин к jQuery.<br />
Возможности:</p>
<p>* Подгоняет размеры изображений под разрешение монитора;<br />
* Пририсовывает тень к всплывающему окошку;<br />
* Поддерживает возможность группирования объектов и их просмотр в виде галереи в одном окне;<br />
* Выведет для вас не только изображения, но и inline-элементы, а также HTML-контен в iframe;<br />
* Конечно же, все это благолепие можно конфигурировать, а также экспериментировать с CSS.</p>
<p>Теперь о размерах, а точнее, весе скрипта (вопрос немаловажный):</p>
<p>* непосредственно jquery.fancybox-1.0.0.js – 12 Кб<br />
* сам jQery (jquery-1.2.3.pack.js) – 29,1 Кб<br />
* дополнительный скриптик jquery.pngFix.pack.js – 2,52 Кб<br />
* CSS – около 4 Кб<br />
* изображения – 17 Кб</p>
<p>Подключение и использование скрипта не представляет никакой сложности:<br />
1. Сначала подключаем скрипты и CSS:</p>
<p><em>/* обязательно */<br />
&lt;script type="text/javascript" src="js/jquery.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="js/jquery.fancybox.js"&gt;&lt;/script&gt;</p>
<p>/* опционально */<br />
&lt;script type="text/javascript" src="js/jquery.pngFix.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="js/jquery.metadata.js"&gt;&lt;/script&gt;</p>
<p>/* цепляем CSS */<br />
&lt;link rel="stylesheet" href="css/fancybox.css" type="text/css" media="screen"&gt;</em></p>
<p>2. Берем подопытную картинку:</p>
<p><em>&lt;a href="image_big.jpg"&gt;&lt;img src="image_small.jpg" alt=""/&gt;&lt;/a&gt;</em></p>
<p>примечание: можете использовать атрибут title для отображения подписи к изображению, а также rel – для группировки обектов.<br />
Заключаем картинку в какое-нибудь оформление (p, div, span – без разницы) с определенным ID. Например, так:</p>
<p><em>&lt;p id="”test1”"&gt;&lt;a href="image_big.jpg"&gt;&lt;img src="image_small.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;</em></p>
<p>3. Инициализируем плагин:</p>
<p><em>$(document).ready(function() {<br />
$("p#test1 a").fancybox();<br />
});</em></p>
<p>Готово. В данном случае по щелчку на изображение появится всплывающее окошко с оригиналом изображения. Все параметры окна будут по умолчанию Но вы можете использовать дополнительные опции при вызове плагина, например:</p>
<p><em>$(document).ready(function() {<br />
$("p#test2 a").fancybox({<br />
&#8216;hideOnContentClick&#8217;: true<br />
});<br />
});</em></p>
<p>Параметр &#8216;hideOnContentClick&#8217;: true  — делает возможным закрытие всплывающего окна не только по нажатию на специальную кнопку, но и по щелчку на свободной области.<br />
Со всеми возможными настройками можете ознакомиться на официальном сайте плагина, где также можно скачать архив и полюбоваться на примеры работы скрипта .</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/jquery-%d0%b2%d1%81%d0%bf%d0%bb%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b5%d0%b5-%d0%be%d0%ba%d0%bd%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery scrollbar</title>
		<link>http://fixblog.ru/2010/04/14/jquery-scrollbar/</link>
		<comments>http://fixblog.ru/2010/04/14/jquery-scrollbar/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:16:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[scrollbar]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=292</guid>
		<description><![CDATA[В разных браузерах полоса прокрутки выглядит по разному. И когда  возникает необходимость настроить внешний вид скроллбара, появляются  мысли что это должно быть как-то связано с CSS. Если вы будете искать информацию об этом, то скорее  всего обнаружите что есть стили с помощью которых можно настроить цвет  скроллбара. Стоит заметить, что поддерживаются [...]]]></description>
			<content:encoded><![CDATA[<p>В разных браузерах полоса прокрутки выглядит по разному. И когда  возникает необходимость настроить внешний вид скроллбара, появляются  мысли что это должно быть как-то связано с <abbr title="Cascading Style  Sheets">CSS</abbr>. Если вы будете искать информацию об этом, то скорее  всего обнаружите что есть стили с помощью которых можно настроить цвет  скроллбара. Стоит заметить, что поддерживаются эти стили только  браузерами IE 5.5 и выше.</p>
<p><span id="more-292"></span></p>
<p>Бывают ситуации когда необходимо иметь полный контроль на внешним  видом скроллбара. Например если дизайнер сделал элемент со специфической  полосой прокрутки.</p>
<p>Для решения этой проблемы нам на помощь приходит Javascript со своими  возможностями. Используя jQuery плагин <a href="http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html">jScrollPane</a>,  можно легко настроить внешний вид полосы прокрути по своему вкусу.</p>
<p><abbr title="Hypertext Markup Language">HTML</abbr> разметка включает  всего один внешний контейнер. Контейнер с <code>id="scroll-wrap"</code> в данном случае необходим лишь для позиционирования.</p>
<div>
<div>
<pre>&lt;body&gt;
    &lt;div class="scroll-wrap"&gt;
        &lt;div class="scroll-pane"&gt;
            ....
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;</pre>
</div>
</div>
<p><abbr title="Cascading Style Sheets">CSS</abbr>:</p>
<div>
<div>
<pre>.scroll-wrap{
    width: 300px;
    margin: 40px auto;
    background: #F7F1E5
}
.scroll-pane{
    width: 290px;
    height: 200px;
    padding: 0 0 0 10px;
    overflow: hidden
}
a.jScrollArrowUp{
    display: block;
    position: absolute;
    z-index: 1;
    top: 0;
    right: 0;
    text-indent: -2000px;
    overflow: hidden;
    background:url(images/but.gif) no-repeat center top;
    height:18px;
}
a.jScrollArrowDown {
    display: block;
    position: absolute;
    z-index: 1;
    bottom: 0;
    right: 0;
    text-indent: -2000px;
    overflow: hidden;
    background:url(images/but.gif) no-repeat center top;
    height:18px;
}
.jScrollPaneDrag {
    position: absolute;
    cursor: pointer;
    overflow: hidden;
    background:url(images/drag.gif) no-repeat left top;
    height:42px
}</pre>
</div>
</div>
<p>Далее необходимо подключить следующие файлы в секцию head:</p>
<div>
<div>
<pre>&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jScrollPane.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.mousewheel.min.js"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" type="text/css" media="all" href="jScrollPane.css" /&gt;</pre>
</div>
</div>
<p>Файл <code>jquery.mousewheel.min.js</code> необходим в том случае,  если необходимо прокручивание содержимого колесом мыши.</p>
<p>и небольшой javascript:</p>
<div>
<div>
<pre>$(function()
{
$('.scroll-pane').jScrollPane({showArrows:true,scrollbarWidth:19,dragMaxHeight:43});
});</pre>
</div>
</div>
<p>Параметр showArrows отвечает за отображение кнопок прокрутки,  scrollbarWidth отвечает за ширину полосы, а dragMaxHeight за  максимальную высоту перетаскиваемой панели.</p>
<h3>Удобство и доступность</h3>
<p>Лишая скроллбар его естественного вида, вы рискуете тем, что  пользователи не смогут распознать в новом дизайне, элемент, которым они  привыкли пользоваться. Вы должны быть уверены, что новый вид  ассоциируется именно с полосой прокрутки.</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/jquery-scrollbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery календарь</title>
		<link>http://fixblog.ru/2010/04/13/jquery-%d0%ba%d0%b0%d0%bb%d0%b5%d0%bd%d0%b4%d0%b0%d1%80%d1%8c/</link>
		<comments>http://fixblog.ru/2010/04/13/jquery-%d0%ba%d0%b0%d0%bb%d0%b5%d0%bd%d0%b4%d0%b0%d1%80%d1%8c/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:56:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=279</guid>
		<description><![CDATA[jQuery  UI Library DatePicker 


Элемент DatePicker из известной библиотеки интерфейсных элементов   jQuery UI.  Множество полезных функций, а главное &#8211; локализация для  многих языков!

jMonthCalendar

jMonthCalendar полный календарь на месяц, который поддерживает  управление через события, что очень важно для разработчиков.
Вы просто инициализируете этот календарь с определенными параметрами и с  массивом событий, [...]]]></description>
			<content:encoded><![CDATA[<h3><a rel="nofollow" href="http://jqueryui.com/demos/datepicker">jQuery  UI Library DatePicker </a></h3>
<p><a rel="nofollow" href="http://jqueryui.com/demos/datepicker"><img class="alignnone size-full wp-image-287" title="jquerygui" src="http://fixblog.ru/wp-content/uploads/2010/04/jquerygui.png" alt="" width="231" height="208" /><br />
</a></p>
<p>Элемент DatePicker из известной библиотеки интерфейсных элементов   jQuery UI.  Множество полезных функций, а главное &#8211; локализация для  многих языков!</p>
<p><span id="more-279"></span></p>
<h3><a rel="nofollow" href="http://www.bytecyclist.com/projects/jmonthcalendar/">jMonthCalendar</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/jquery-calendar.png"><img class="alignnone size-medium wp-image-286" title="jquery-calendar" src="http://fixblog.ru/wp-content/uploads/2010/04/jquery-calendar-300x166.png" alt="" width="300" height="166" /></a></p>
<p>jMonthCalendar полный календарь на месяц, который поддерживает  управление через события, что очень важно для разработчиков.<br />
Вы просто инициализируете этот календарь с определенными параметрами и с  массивом событий, все остальное плагин делает сам!<br />
Плагин позволяет разработчику отслеживать такие события, как click,  когда пользователь только собирается изменить месяц, а также событие  после завершения<br />
смены месяца. Поддерживает события перемещения мыши на объектами  календаря и т.д.</p>
<h3><a rel="nofollow" href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/">jQuery  date picker plug-in</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/simpledatepicker.png"><img class="alignnone size-full wp-image-289" title="simpledatepicker" src="http://fixblog.ru/wp-content/uploads/2010/04/simpledatepicker.png" alt="" width="177" height="168" /></a></p>
<p>Это абсолютно надежный плагин позволяет очень просто добавить ввод  даты на вашем сайте.</p>
<h3><a rel="nofollow" href="http://eisabainyo.net/demo/jquery.calendar-widget.php">jQuery  Calendar Widget Plugin</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/jcalwidget.png"><img class="alignnone size-medium wp-image-285" title="jcalwidget" src="http://fixblog.ru/wp-content/uploads/2010/04/jcalwidget-300x116.png" alt="" width="300" height="116" /></a></p>
<p>Очень простенький виджет для отображения календаря на месяц на вашем  сайте.<br />
Вы можете указать, какой именно  месяц надо отображать, либо задать  автоматическое отображение текущего месяца.<br />
Это плагин содержит всего 100 строчек кода, но весьма функционален.</p>
<h3><a rel="nofollow" href="http://code.google.com/p/jquery-jcal/">jCal &#8211;  slick jquery datapicker plugin</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/jcal.jpg"><img class="alignnone size-full wp-image-284" title="jcal" src="http://fixblog.ru/wp-content/uploads/2010/04/jcal.jpg" alt="" width="476" height="268" /></a></p>
<p>Замечательный анимированный календарь для выбора даты с отображением  календаря по месяцам. Позволяет отображать несколько месяцев подряд, а  пользователю &#8211; выбирать несколько последовательных дней.<br />
Он просто незаменим  в системах резервирования билетов, заказа  гостиницы, выбора туристического тура и т.д.</p>
<h3><a rel="nofollow" href="http://code.google.com/p/dyndatetime/">dyndatetime</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/dyndate.png"><img class="alignnone size-full wp-image-282" title="dyndate" src="http://fixblog.ru/wp-content/uploads/2010/04/dyndate.png" alt="" width="239" height="161" /></a></p>
<p>Этот календарь поддерживает не только дату, но и время, позволяет  настраивать режим отображения.</p>
<h3><a rel="nofollow" href="http://www.eyecon.ro/datepicker/">Date  Picker &#8211; jQuery plugin</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/datepicker.png"><img class="alignnone size-full wp-image-281" title="datepicker" src="http://fixblog.ru/wp-content/uploads/2010/04/datepicker.png" alt="" width="205" height="159" /></a></p>
<p>Это компонент, также написанный на jQuery, легко встраивается в любое  web-приложение и имеет множество параметров настройки.</p>
<h3><a rel="nofollow" href="http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/">Date  Range Picker</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/filament.png"><img class="alignnone size-full wp-image-283" title="filament" src="http://fixblog.ru/wp-content/uploads/2010/04/filament.png" alt="" width="439" height="265" /></a></p>
<p>Еще одно решение для выбора дат, точнее диапазона дат, основанное на  библиотеке на основе jQuery от  Filament Group Inc.</p>
<h3><a rel="nofollow" href="http://teddevito.com/demos/calendar.php">simple  jQuery date-picker plugin</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/simple.png"><img class="alignnone size-full wp-image-288" title="simple" src="http://fixblog.ru/wp-content/uploads/2010/04/simple.png" alt="" width="185" height="211" /></a></p>
<p>Очень интересный календарь для выбора даты, созданный Ted  Devito,  пока в бэтта версии</p>
<h3><a rel="nofollow" href="http://jonathanleighton.com/projects/date-input">Date Input</a></h3>
<p><a href="http://fixblog.ru/wp-content/uploads/2010/04/dateinput.png"><img class="alignnone size-full wp-image-280" title="dateinput" src="http://fixblog.ru/wp-content/uploads/2010/04/dateinput.png" alt="" width="254" height="249" /></a></p>
<p>Date Input &#8211;  без излишних изяществ, простой, но быстрый плагин,  написанный на jQuery</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/13/jquery-%d0%ba%d0%b0%d0%bb%d0%b5%d0%bd%d0%b4%d0%b0%d1%80%d1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lightbox jquery галерея</title>
		<link>http://fixblog.ru/2010/04/13/lightbox-jquery-%d0%b3%d0%b0%d0%bb%d0%b5%d1%80%d0%b5%d1%8f/</link>
		<comments>http://fixblog.ru/2010/04/13/lightbox-jquery-%d0%b3%d0%b0%d0%bb%d0%b5%d1%80%d0%b5%d1%8f/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:33:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=273</guid>
		<description><![CDATA[Смотри также: библиотека lightbox
Нам понадобится библиотека jQuery, конечно же сам плагин jquery.lightbox.js,  файл стилевого оформления, несколько картинок (вперед, назад,  загрузка…) и фотографии для Вашей галереи, представленные в двух  вариантах: миниатюра и полноразмерное изображение.

jquery.lightbox.js можно скачать на сайте автора
Для начала подключим в разделе HEAD нашей HTML-страницы нужные файлы,  конечно же соблюдая пути [...]]]></description>
			<content:encoded><![CDATA[<p>Смотри также: <a href="http://fixblog.ru/2010/04/13/lightbox/">библиотека lightbox</a></p>
<p>Нам понадобится библиотека jQuery, конечно же сам плагин <strong>jquery.lightbox.js</strong>,  файл стилевого оформления, несколько картинок (вперед, назад,  загрузка…) и фотографии для Вашей галереи, представленные в двух  вариантах: миниатюра и полноразмерное изображение.</p>
<p><span id="more-273"></span></p>
<blockquote><p><strong>jquery.lightbox.js</strong> можно <a href="http://leandrovieira.com/projects/jquery/lightbox/">скачать на сайте автора</a></p></blockquote>
<p>Для начала подключим в разделе HEAD нашей HTML-страницы нужные файлы,  конечно же соблюдая пути к ним (у Вас они могут отличаться):</p>
<div id="highlighter_852835">
<div>
<div>
<table>
<tbody>
<tr>
<td><code>1</code></td>
<td><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>src</code><code>=</code><code>"js/jquery-1.2.6.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>2</code></td>
<td><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>src</code><code>=</code><code>"js/jquery.lightbox.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>3</code></td>
<td><code>&lt;</code><code>link</code> <code>rel</code><code>=</code><code>"stylesheet"</code> <code>type</code><code>=</code><code>"text/css"</code> <code>href</code><code>=</code><code>"lightbox.css"</code> <code>/&gt;</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Затем займемся размещением в теле HTML-страницы миниатюр. Тут простор  для творчества – размещайте как, где и сколько хотите миниатюр. Вот  например:</p>
<div id="highlighter_966961">
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>&lt;</code><code>ul</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td><code> </code><code>&lt;</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code> </code><code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"img/01.jpg"</code> <code>rel</code><code>=</code><code>"lightbox-tour"</code> <code>title</code><code>=</code><code>"1-я"</code><code>&gt;&lt;</code><code>img</code> <code>src</code><code>=</code><code>"img/01m.jpg"</code> <code>/&gt;&lt;/</code><code>a</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code> </code><code>&lt;/</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code> </code><code>&lt;</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code> </code><code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"img/02.jpg"</code> <code>rel</code><code>=</code><code>"lightbox-tour"</code> <code>title</code><code>=</code><code>"2-я"</code><code>&gt;&lt;</code><code>img</code> <code>src</code><code>=</code><code>"img/02m.jpg"</code> <code>/&gt;&lt;/</code><code>a</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code> </code><code>&lt;/</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code> </code><code>&lt;</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code> </code><code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"img/03.jpg"</code> <code>rel</code><code>=</code><code>"lightbox-tour"</code> <code>title</code><code>=</code><code>"3-я"</code><code>&gt;&lt;</code><code>img</code> <code>src</code><code>=</code><code>"img/03m.jpg"</code> <code>/&gt;&lt;/</code><code>a</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code> </code><code>&lt;/</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code> </code><code>&lt;</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code> </code><code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"img/04.jpg"</code> <code>rel</code><code>=</code><code>"lightbox-tour"</code> <code>title</code><code>=</code><code>"4-я"</code><code>&gt;&lt;</code><code>img</code> <code>src</code><code>=</code><code>"img/04m.jpg"</code> <code>/&gt;&lt;/</code><code>a</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code> </code><code>&lt;/</code><code>li</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>&lt;/</code><code>ul</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Довольно просто: мы разместили миниатюры в списке (Вы можете избрать  другой вариант). Самое главное здесь не список, а то, что мы заключили  картинку-миниатюру в тэг А, который ссылается на полноразмерное  изображение и имеет атрибут rel со значением lightbox-tour. Вот это  действительно важно. Собственно Вы могли бы задать значение  lightbox-petya или lightbox-1 для всех фотографий галереи. Здесь важно  присутствие ключевого слова lightbox, а разные «окончания» всего лишь  идентификатор одной группы фотографий – ведь Вы можете разместить на  странице и несколько независимых наборов, которые могут включать в себя  от 1 до N (сколько влезет) фотографий. И еще – содержимое атрибута title  – это описание, прилагаемое при просмотре к полноразмерной фотографии.</p>
<p>Это самый простой и легкий способ использования плагина jQuery  LightBox. Есть и еще один, более гибкий способ. Посмотрите код,  приведенный ниже. В jQuery-селекторе мы отбираем все элементы А, которые  нас интересуют. Но преимущество этого способа даже не в этом, а в том,  что тут можно использовать кое-какие опции, которые мы разберем ниже…</p>
<div id="highlighter_461334">
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>&lt;script type=</code><code>"text/javascript"</code><code>&gt;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td><code>$(document).ready(</code><code>function</code><code>(){</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>$(</code><code>"#selector a"</code><code>).lightbox();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>$.Lightbox.construct({</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code> </code><code>"speed"</code><code>: 700,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code> </code><code>"show_linkback"</code><code>: </code><code>true</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code> </code><code>"keys"</code><code>: {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code> </code><code>close: </code><code>"q"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code> </code><code>prev: </code><code>"z"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code> </code><code>next: </code><code>"x"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code> </code><code>},</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code> </code><code>"opacity"</code><code>: 0.7,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code> </code><code>"rel"</code><code>: box-tour,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code> </code><code>text: {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>15</code></td>
<td><code> </code><code>image: </code><code>"Картинка"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>16</code></td>
<td><code> </code><code>of: </code><code>"из"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>17</code></td>
<td><code> </code><code>close: </code><code>"Закрыть"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>18</code></td>
<td><code> </code><code>closeInfo: </code><code>"Клик вне картинки  завершит просмотр."</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>19</code></td>
<td><code> </code><code>help: {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>20</code></td>
<td><code> </code><code>close: </code><code>"Закрыть"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>21</code></td>
<td><code> </code><code>interact: </code><code>"Интерактивная  подсказка"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>22</code></td>
<td><code> </code><code>},</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>23</code></td>
<td><code> </code><code>about: {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>24</code></td>
<td><code> </code><code>text: </code><code>"Можно вставить  какую-нибудь ссылку"</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>25</code></td>
<td><code> </code><code>title: </code><code>"И снабдить ее  комментарием..."</code><code>,</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>26</code></td>
<td><code> </code><code>link: </code><code>"http://fixblog.ru"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>27</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>28</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>29</code></td>
<td><code>});</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>30</code></td>
<td><code>});</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>31</code></td>
<td><code>&lt;/script&gt;</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Набор опций передается в <strong>$.Lightbox.construct({});</strong>. В  общем-то все опции имеют говорящие названия, но раз обещал их пояснить…<br />
<strong>speed</strong> – скорость перехода от одной картинки к другой,  указывается в миллисекундах.<br />
<strong>show_linkback</strong> – показывать или не показывать ссылку при  просмотре. Принимает значения true/false. По умолчанию true –  показывать.<br />
<strong>opacity</strong> – прозрачность общего фона при просмотре.  Изменяется от 0 до 1. По умолчанию установлено 0.9.<br />
<strong>keys</strong> – тут можно определить клавиши управления при  просмотре. Принимает набор из пар ключ/значение. <strong>close</strong> –  ясное дело закрыть, <strong>prev</strong> – предыдущая картинка, <strong>next</strong> – следующая. По умолчанию close:c, prev:p, next:n.<br />
<strong>text</strong> – тут уж совсем пояснять нечего. Просто посмотрите  пример…</p>
<p>Я привел не все опции – остальные Вы сможете обнаружить, если  откроете файл jquery.lightbox.js и найдете строки 455 – 520.</p>
<p>Что еще можно натворить с jQuery LightBox, чтобы Ваш экземпляр  немного отличался от своих собратьев? Пожалуй немного поковырять  стилевое оформление в файле <strong>lightbox.css</strong>. Ну например,  чтобы изменить цвет фона с установленного по умолчанию черного на  какой-нибудь зеленый, найдите <strong>#lightbox-overlay</strong> и  поменяйте <strong>background-color:#0000;</strong> на <strong>background-color:#00ff00;</strong> и так далее…</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/13/lightbox-jquery-%d0%b3%d0%b0%d0%bb%d0%b5%d1%80%d0%b5%d1%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery mootools</title>
		<link>http://fixblog.ru/2010/04/13/jquery-mootools/</link>
		<comments>http://fixblog.ru/2010/04/13/jquery-mootools/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 15:59:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fix]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Prototype-UI]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=255</guid>
		<description><![CDATA[А также Prototype и прочее. Громадным плюсом jQuery является его совместимость с другими фреймворками.
&#60;!&#8211;more&#8211;&#62;
Так вот. Чтобы одновременно работало несколько фреймворков, в jQuery следует писать не $(element), а jQuery(element).
Как говорится все элементарное просто  
]]></description>
			<content:encoded><![CDATA[<p>А также Prototype и прочее. Громадным плюсом jQuery является его совместимость с другими фреймворками.<br />
&lt;!&#8211;more&#8211;&gt;<br />
Так вот. Чтобы одновременно работало несколько фреймворков, в jQuery следует писать не $(element), а jQuery(element).<br />
Как говорится все элементарное просто <img src='http://fixblog.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/13/jquery-mootools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

