<?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>jQuery и другое... &#187; интерфейс</title>
	<atom:link href="http://www.linkexchanger.su/tag/interfejs/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linkexchanger.su</link>
	<description>css, html, php, javascript, jQuery, ajax ... - решения, примеры, рецепты</description>
	<lastBuildDate>Sun, 08 Jan 2012 13:25:49 +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 dialog &#8211; диалоговое окно.</title>
		<link>http://www.linkexchanger.su/2008/32.html</link>
		<comments>http://www.linkexchanger.su/2008/32.html#comments</comments>
		<pubDate>Fri, 22 Feb 2008 07:10:04 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[draggable]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[resizible]]></category>
		<category><![CDATA[диалог]]></category>
		<category><![CDATA[интерфейс]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/32.html</guid>
		<description><![CDATA[Разберем еще один пример для библиотеки jQuery &#8211; построение диалогового окна. При всей полезности этого плагина не могу не отметить, что по крайней мере в IE и Opera присутствуют небольшие огрехи (их можно увидеть и на сайте разработчиков), но они связаны скорее со стилевым оформлением, чем с работой самой библиотеки. В FireFox же и Netscape [...]]]></description>
			<content:encoded><![CDATA[<p>Разберем еще один пример для библиотеки jQuery &#8211; построение диалогового окна. При всей полезности этого плагина не могу не отметить, что по крайней мере в IE и Opera присутствуют небольшие огрехи (их можно увидеть и на сайте разработчиков), но они связаны скорее со стилевым оформлением, чем с работой самой библиотеки. В FireFox же и Netscape Navigator никаких проблем не наблюдалось. Поскольку штука получилась весьма полезная &#8211; разберем ее подробнее. <font color="#ff0000"><strong>Внимание! Эта статья устарела!</strong></font> Новую статью можно <a href="http://www.linkexchanger.su/2009/95.html">почитать здесь</a>.<span id="more-32"></span></p>
<p>Итак, что мы можем получить подключив несколько javascript-файлов, задав соответствующее стилевое оформление и написав вот такой небольшой кусочек кода.<code> </code></p>
<pre class="brush: jscript;">$(&quot;#example&quot;).dialog();</pre>
<p>Мы получаем диалоговое окно, которое можно перемещать по экрану в любом направлении. Мы можем менять размеры этого окна. И конечно, содержимое этого окна может быть вполне функциональным. Испытайте все это на примере.</p>
<blockquote><p>Принимайте во внимание, что пример демонстрируется во фрейме.</p></blockquote>
<p><iframe src="http://www.linkexchanger.su/example_jquery/dialog.html" style="border: medium none " width="420" height="420"></iframe></p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/dialog.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>В раздел HEAD понадобится подключить довольно много файлов: кроме самой библиотеки jQuery &#8211; jquery-1.2.1.js, файлы jquery.dimensions.js, ui.resizable.js, ui.draggable.js, ui.mouse.js и конечно <strong>ui.dialog.js</strong></p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.dimensions.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.dialog.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.resizable.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.mouse.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.draggable.js&quot;&gt;&lt;/script&gt;</pre>
<p>В исходном коде примера Вы сможете посмотреть стилевую таблицу, отвечающую за отображение диалогового окна и при необходимости отредактировать ее под свой дизайн. Обращаю Ваше внимание на, то что имена классов менять нежелательно. В противном случае Вам придется самостоятельно править код в файле <strong>ui.dialog.js</strong>.</p>
<p>HTML-код не представляет собой ничего интересного &#8211; элемент <strong>div</strong>, который будет служить диалоговым окном с идентификатором и именем класса.</p>
<p>И наконец приведу полностью тот код, который отвечает за диалоговое окно.</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;#example&quot;).dialog({
    title: &quot;Пример диалогового окна&quot;,
    width: 250,
    height: 150,
    resizable: true,
    draggable: true,
    position: &quot;center&quot;,
    buttons: {
      &quot;Отправить&quot;: function() {
        alert(&quot;Вы нажали кнопку Отправить&quot;);
      },
      &quot;Закрыть&quot;: function() {
        $(this).dialog(&quot;close&quot;);
        alert(&quot;Вы нажали кнопку Закрыть&quot;);
      }
    }
  });
});
&lt;/script&gt;</pre>
<p>Элемент с идентификатором <strong>#example</strong> будет служить диалоговым окном. В файле <strong>ui.dialog.js</strong> большинство опций заданы по умолчанию, мы же для примера попробуем переопределить большинство из них.<br />
<strong>title: &#8216;Пример диалогового окна&#8217;</strong> &#8211; задаем название диалогового окна.<br />
<strong>width: 250</strong> &#8211; ширина окна в px.<br />
<strong>height: 150</strong> &#8211; высота окна в px.<br />
<strong>resizable: true</strong> &#8211; диалоговое окно может (или false &#8211; не может) изменять свои размеры.<br />
<strong>draggable: true</strong> &#8211; диалоговое окно может (или false &#8211; не может) перемещаться по экрану.<br />
<strong>position: center</strong> &#8211; начальное положение окна на экране. Доступны значения center, left, top.<br />
<strong>buttons</strong> &#8211; об этом несколько подробнее. Эта опция определяет кнопки, которые понадобится отображать в диалоге. Определяются они парами ключ/значение, где ключ &#8211; это текст, который необходимо отобразить на кнопке, а в качестве значения может выступать функция, которая должна быть вызвана при клике на соответствующую кнопку.</p>
<p>Вот собственно и все. А внутри диалогового окна можно предусмотреть то, что угодно Вам. Будь то авторизационная форма или форма для отправки e-mail с сайта, или еще что-то&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/32.html/feed</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: tooltip &#8211; всплывающая подсказка.</title>
		<link>http://www.linkexchanger.su/2008/31.html</link>
		<comments>http://www.linkexchanger.su/2008/31.html#comments</comments>
		<pubDate>Fri, 08 Feb 2008 05:10:11 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tooltip]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[подсказка]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/31.html</guid>
		<description><![CDATA[Стандартные всплывающие подсказки выглядят надо сказать очень и очень бледно. С помощью библиотеки jQuery и небольшого плагина к ней мы легко сможем использовать всплывающие подсказки (tooltip) с пользовательским оформлением.
Для начала небольшой пример, который продемонстрирует, как такие подсказки могут выглядеть. Для примера выбраны обычная ссылка &#8211; элемент а и элемент input.
Пожалуйста, примите во внимание, что пример [...]]]></description>
			<content:encoded><![CDATA[<p>Стандартные всплывающие подсказки выглядят надо сказать очень и очень бледно. С помощью библиотеки jQuery и небольшого плагина к ней мы легко сможем использовать всплывающие подсказки (tooltip) с пользовательским оформлением.<span id="more-31"></span></p>
<p>Для начала небольшой пример, который продемонстрирует, как такие подсказки могут выглядеть. Для примера выбраны обычная ссылка &#8211; элемент <strong>а</strong> и элемент <strong>input</strong>.</p>
<blockquote><p>Пожалуйста, примите во внимание, что пример мне приходится демонстрировать во фрейме.</p></blockquote>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/tooltip.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>Файлы необходимые для реализации подключаем в раздел <strong>HEAD</strong>, их всего три &#8211; это сама библиотека jQuery, файл jquery.dimensions.js и файл для работы с подсказками <strong>jquery.tooltip.js</strong></p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.dimensions.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.tooltip.js&quot;&gt;&lt;/script&gt;</pre>
<p>Дальше немного посмотрим на таблицу стилей, вернее на ту ее часть, где мы можем оформить нашу всплывающую подсказку.</p>
<pre class="brush: css;">#tooltip {
  position: absolute;
  z-index: 3000;
  width:250px;
  border: 1px solid #269;
  background-color: #48b;
  padding: 0;
  opacity: 0.85;
  color:#fff;
}
#tooltip h3 {
  background-color: #269;
  padding-left:5px;
  font-weight:bold;
  font-size:1.4em;
}
#tooltip div {
  padding-left:5px;
  padding-right:5px;
}</pre>
<p><strong>#tooltip</strong> &#8211; это и есть подсказка. Мы задаем абсолютное позиционирование, изымая таким образом подсказку из общего потока, а свойству <strong>z-index</strong> задаем заведомо большое значение, чтобы расположить подсказку &laquo;выше&raquo; элементов страницы. Дальше ничего сложного нет вообще нет. <strong>#tooltip h3</strong> &#8211; это заголовок подсказки, в элементе <strong>#tooltip div</strong> &#8211; текст подсказки. Вообще здесь важно только сохранить название идентификатора <strong>#tooltip</strong>, все остальное &#8211; на Ваш вкус.</p>
<p>Дальше приведу пример кода вызова наших всплывающих подсказок.</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;a, input&quot;).tooltip({
    track: true,
    delay: 100,
    showBody: &quot;::&quot;,
    opacity: 0.85
  });
});
&lt;/script&gt;</pre>
<p>Указываем элементы <strong>a</strong> и <strong>input</strong> в качестве элементов, для которых будут вызываться всплывающие подсказки. Но это еще не все. Необходимо, чтобы эти элементы имели атрибут <strong>title</strong>. Именно его значение используется для формирования подсказки.</p>
<p>Обратите внимание на опцию <strong>showBody</strong>. В ней можно указать разделитель. Часть до разделителя будет показана в заголовке подсказки, оставшаяся часть в теле подсказки.<br />
Опция <strong>track</strong>: если установлена в <strong>true</strong> &#8211; подсказка будет &laquo;привязана&raquo; к указателю мыши.<br />
<strong>delay</strong> &#8211; отсрочка появления подсказки в миллисекундах, по умолчанию установлено значение 250.<br />
<strong>opacity: 0.85</strong> &#8211; прозрачность (ну конечно не для IE).</p>
<p>Я как всегда привел лишь несколько из возможных опций, список их несколько шире. Найти полный перечень можно на сайте разработчиков.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/31.html/feed</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: tablesorter &#8211; сортировка таблиц.</title>
		<link>http://www.linkexchanger.su/2008/30.html</link>
		<comments>http://www.linkexchanger.su/2008/30.html#comments</comments>
		<pubDate>Tue, 05 Feb 2008 21:10:18 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tablesorter]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[сортировка]]></category>
		<category><![CDATA[таблица]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/30.html</guid>
		<description><![CDATA[Сортировка таблиц &#8211; очень часто встречающаяся задача при построении пользовательских интерфейсов. Давайте посмотрим как легко и просто решается задача сортировки таблиц на стороне клиента с помощью библиотеки jQuery.
Испытайте этот небольшой пример, а затем мы разберем как это сделано.
Вы можете скачать исходный код примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.
В раздел [...]]]></description>
			<content:encoded><![CDATA[<p>Сортировка таблиц &#8211; очень часто встречающаяся задача при построении пользовательских интерфейсов. Давайте посмотрим как легко и просто решается задача сортировки таблиц на стороне клиента с помощью библиотеки jQuery.<span id="more-30"></span></p>
<p>Испытайте этот небольшой пример, а затем мы разберем как это сделано.</p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/tablesorter.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>В раздел <strong>HEAD</strong> понадобится подключить всего два файла: библиотеку jQuery &#8211; <strong>jquery-1.2.1.js</strong> и файл <strong>ui.tablesorter.js</strong></p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.tablesorter.js&quot;&gt;&lt;/script&gt;</pre>
<p>В исходном коде примера Вы сможете посмотреть стилевую таблицу, отвечающую за отображение календаря и при необходимости отредактировать ее под свой дизайн. Эта часть кода выделена комментариями /* Стили для таблицы */.</p>
<p>HTML-код не представляет собой ничего интересного &#8211; это обычная таблица. Обращу внимание разве что на необходимость использования тэгов <strong>thead</strong> и <strong>tbody</strong>.</p>
<p>И наконец приведу очень простой код, который будет вызывать UI Tablesorter:</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;#example&quot;).tablesorter({
	widgets: [&quot;zebra&quot;],
	sortList:[[1,0]]
  });
});
&lt;/script&gt;</pre>
<p>Таблица с идентификатором <strong>#example</strong> будет сортируемой. Большинство опций сортировки задано по умолчанию в самом файле <strong>ui.tablesorter.js</strong>, но мы легко можем их переопределить.<br />
<strong>widgets: ["zebra"]</strong> &#8211; используем &laquo;фирменный&raquo; виджет, чтобы чередовать цвет строк в таблице.<br />
<strong>sortList:[[1,0]]</strong> &#8211; задаем сортировку по умолчанию (при загрузке). В этом примере &#8211; сортировка второго столбца по возрастанию (первая цифра &#8211; порядковый номер столбца, вторая порядок сортировки, где 0 &#8211; по возрастанию, 1 &#8211; по убыванию). Здесь можно задавать сортировку и по нескольким столбцам сразу. Например: <strong>sortList:[[1,0], [0,1]]</strong> &#8211; сначала второй столбец сортируется по возрастанию, а затем первый &#8211; по убыванию&#8230;</p>
<p>Приведу еще пару полезных опций.<br />
<strong>sortMultisortKey</strong> &#8211; по умолчанию задано значение <strong>shiftKey</strong>, т.е. щелкая мышью по заголовку столбца при нажатой клавише Shift можно выполнять сортировку по нескольким столбцам. Естественно клавишу можно переопределить. Например так: <strong>sortMultiSortKey: &laquo;ctrlKey&raquo;</strong>. Теперь можно работать через клавишу <strong>Ctrl</strong>.<br />
<strong>headers</strong> &#8211; с помощью этой опции можно запретить сортировку по отдельным столбцам. Например: <strong>headers: { 4: { sorter: false} }</strong> запретит сортировку пятого столбца.</p>
<p>Весь список опций есть на сайте разработчиков библиотеки, а я буду благодарен, если найдете возможность оставить свои отзывы&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/30.html/feed</wfw:commentRss>
		<slash:comments>66</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: datepicker &#8211; календарь для выбора дат.</title>
		<link>http://www.linkexchanger.su/2008/25.html</link>
		<comments>http://www.linkexchanger.su/2008/25.html#comments</comments>
		<pubDate>Wed, 30 Jan 2008 06:00:07 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[datepicker]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[календарь]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/25.html</guid>
		<description><![CDATA[Эту штуку можно часто встретить, когда сталкиваешься с заполнением форм, там где требуется ввести дату или диапазон дат в нужном формате. Пользователь, он же обязательно ошибется и введет дату не в том формате, потом будет соображать, где ошибка, а потом и вовсе уйдет, не заполнив форму&#8230; Вот для того, чтобы сделать выбор даты очень простым [...]]]></description>
			<content:encoded><![CDATA[<p>Эту штуку можно часто встретить, когда сталкиваешься с заполнением форм, там где требуется ввести дату или диапазон дат в нужном формате. Пользователь, он же обязательно ошибется и введет дату не в том формате, потом будет соображать, где ошибка, а потом и вовсе уйдет, не заполнив форму&#8230; Вот для того, чтобы сделать выбор даты очень простым и удобным и предназначен этот UI jQuery. Календарь, или что точнее datepicker. <strong><span style="color: #ff0000;">Внимание! Эта статья устарела!</span></strong> Новую статью можно <a href="http://www.linkexchanger.su/2009/103.html">почитать здесь</a>.<span id="more-25"></span></p>
<p>Как всегда для начала демонстрация примеров, а затем разберемся, как это использовать у себя. Клик по текстовому полю слева заставит работать календарь с выбором одной даты. Справа &#8211; календарь с выбором диапазона дат.</p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/datepicker.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>В раздел <strong>HEAD</strong> понадобится подключить всего два файла: библиотеку jQuery &#8211; jquery-1.2.1.js и файл <strong>ui.datepicker.js</strong></p>
<pre class="brush: xml;">[/html]

&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.datepicker.js&quot;&gt;&lt;/script&gt;

[html]</pre>
<p>В исходном коде примера Вы сможете посмотреть стилевую таблицу, отвечающую за отображение календаря и при необходимости отредактировать ее под свой дизайн. Эта часть кода выделена комментариями /* Стили для jQuery UI Datepicker */.</p>
<p>HTML-код не представляет собой ничего интересного &#8211; это простые текстовые поля ввода. Не забудьте только, что наш скрипт будет обращаться к этим элементам по их идентификаторам.</p>
<p>И наконец приведу очень простой код, который будет вызывать UI Datepicker:</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
$(&quot;#example&quot;).attachDatepicker();
$(&quot;#exampleRange&quot;).attachDatepicker({
rangeSelect: true,
yearRange: &quot;2000:2010&quot;,
firstDay: 1
});
});
&lt;/script&gt;</pre>
<p>Элементу с идентификатором <strong>#example</strong> назначен простой календарь с выбором только одной даты, т.е. это настройки по умолчанию.<br />
Для элемента <strong>#exampleRange</strong> заданы опции:<br />
<strong>rangeSelect: true</strong> &#8211; как раз и задает возможность выбора диапазона дат.<br />
<strong>yearRange: &#8216;2000:2010&#8242;</strong> &#8211; установка диапазона дат календаря.<br />
<strong>firstDay: 1</strong> &#8211; задает первый день недели, где 1 &#8211; это понедельник.<br />
Вообще настроек масса. Это и установка начальной даты, которая будет выбрана при старте календаря, и возможность установки минимальной и максимальной разрешенной для выбора даты, и даже возможность через опции задать название дней и месяцев на родном языке и многое другое. Полный перечень можно найти <a href="http://docs.jquery.com/UI/Datepicker/attachDatepicker#options">здесь</a>.</p>
<p>Но, честно говоря мне показалось более уместным задать некоторые настройки непосредственно в самом файле <strong>ui.datepicker.js</strong>, благо сделать это совсем несложно. Тем более, что оригинальный файл, который можно скачать на сайте разработчиков содержит все названия на английском языке, а мы будем использовать русский. Сделать это довольно просто. Надо открыть файл в текстовом редакторе и сделать совсем небольшой перевод функции Datepicker().<br />
Кому это покажется сложным, может воспользоваться моим переводом. В архив примера включен файл <strong>datepicker.translate.js</strong>, в котором и содержится перевод.</p>
<p>Если найдете время оставить отзыв &#8211; спасибо!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/25.html/feed</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: tabs &#8211; содержимое во вкладках.</title>
		<link>http://www.linkexchanger.su/2008/24.html</link>
		<comments>http://www.linkexchanger.su/2008/24.html#comments</comments>
		<pubDate>Tue, 29 Jan 2008 06:03:24 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[вкладка]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[меню]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/24.html</guid>
		<description><![CDATA[В общем случае применение этого UI jQuery может быть и шире, но использование для построения навигационной панели &#8211; это первое, что приходит в голову. Такая панель  хоть и имеет управление на JavaScript, управляется через имена селекторов, поэтому например поисковый робот &#171;увидит&#187; чистый HTML, а пользователь &#8211; элегантное меню. Посмотрим, как это может выглядеть и [...]]]></description>
			<content:encoded><![CDATA[<p>В общем случае применение этого UI jQuery может быть и шире, но использование для построения навигационной панели &#8211; это первое, что приходит в голову. Такая панель  хоть и имеет управление на JavaScript, управляется через имена селекторов, поэтому например поисковый робот &laquo;увидит&raquo; чистый HTML, а пользователь &#8211; элегантное меню. Посмотрим, как это может выглядеть и подробно разберем, как это работает. <strong><font color="#ff0000">Внимание! Эта статья устарела!</font></strong> Новую статью можно <a href="http://www.linkexchanger.su/2009/99.html">почитать здесь</a>.<span id="more-24"></span><br />
Как обычно заглянем на сайт разработчиков. Вот, что написано там.</p>
<pre class="brush: jscript;">$(&quot;#example &gt; ul&quot;).tabs();</pre>
<p>В общем действительно просто, никаких дополнительных опций не используется. Здесь скорее придется потрудиться над стилевым оформлением навигационной панели. Но стилевое оформление &#8211; это другая тема. Давайте испытаем пример и разберемся, как все это работает.<br />
<iframe src="http://www.linkexchanger.su/example_jquery/tabs.html" style="border: medium none " width="420" height="200"></iframe></p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/tabs.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>Файлы необходимые для реализации подключаем в раздел <strong>HEAD</strong>, их всего два &#8211; это сама библиотека jQuery и файл <strong>ui.tabs.js</strong></p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.tabs.js&quot;&gt;&lt;/script&gt;</pre>
<p>Стилевые таблицы упомяну вскользь, целиком их можно посмотреть в файле примера. Здесь можно творить, что душе угодно, не забывая проверить созданную Вами таблицу на совместимость с различными браузерами. Правда есть одно важное замечание: файл ui.tabs.js использует имена классов стилевой таблицы, поэтому, если Вы захотите использовать другие имена, Вам понадобится исправить и файл ui.tabs.js</p>
<p>Что касается HTML-кода &#8211; он тоже довольно прост. Если посмотрите исходные коды примера, то обязательно отметите, как четко он структурирован. Отдельно идет ненумерованный список разделов, отдельно блоки с содержимым разделов. В таком коде удобно разбираться, его удобно править при необходимости.</p>
<p>А вот интересующий нас более всего код, приведу без сокращений:</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
$(&quot;#menu &gt; ul&quot;).tabs({
	fxFade: true,
	fxSpeed: slow
});
&lt;/script&gt;</pre>
<p>Как обычно все &laquo;завернуто&raquo; в $(document).ready(function(){&#8230;}); Дальше все так же просто, как и написано у разработчиков. Просто мы добавили еще пару опций.<br />
<strong>fxFade: true</strong> &#8211; используем функцию &laquo;затухания&raquo; при переходе на другую вкладку.<br />
<strong>fxSpeed: slow</strong> &#8211; и скорость этого затухания &#8211; медленная&#8230;<br />
Это конечно далеко не все возможные опции. Наш горизонтальный список может реагировать на события <strong>click</strong> (щелчок по вкладке), <strong>hide</strong> (при скрытии вкладки), <strong>show</strong> (при открытии вкладки) выполнением пользовательских функций. Может переключаться не по клику мышкой, а по <strong>event: mouseover</strong>, можно задавать открывающуюся по умолчанию вкладку и конечно же во вкладки можно подгружать содержимое используя Ajax. Но о том, как просто работать с Ajax через jQuery я расскажу в отдельной статье.</p>
<p>Буду благодарен, если найдете возможность оставить свои отзывы&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/24.html/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: drag-and-drop сортируемый список.</title>
		<link>http://www.linkexchanger.su/2008/23.html</link>
		<comments>http://www.linkexchanger.su/2008/23.html#comments</comments>
		<pubDate>Mon, 28 Jan 2008 10:25:02 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[drag-and-drop]]></category>
		<category><![CDATA[draggable]]></category>
		<category><![CDATA[droppable]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[li]]></category>
		<category><![CDATA[ol]]></category>
		<category><![CDATA[ul]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[меню]]></category>
		<category><![CDATA[список]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/23.html</guid>
		<description><![CDATA[Внимание! Эта статья устарела. Новая статья по этой теме: &#171;jQuery UI &#8211; плагин Sortable&#187;. Давайте используем возможности jQuery для создания сортируемого с помощью drag-and-drop списка. Возможность сортировать список с помощью простого перетаскивания мышкой  его пунктов, наверняка сможет произвести впечатление на Ваших пользователей. Только не забывайте одну важную вещь: применение всех этих &#171;фишек&#187; должно быть [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">Внимание! Эта статья устарела. Новая статья по этой теме: <a href="http://www.linkexchanger.su/2009/111.html">&laquo;jQuery UI &#8211; плагин Sortable&raquo;</a>.</font> Давайте используем возможности jQuery для создания сортируемого с помощью drag-and-drop списка. Возможность сортировать список с помощью простого перетаскивания мышкой  его пунктов, наверняка сможет произвести впечатление на Ваших пользователей. Только не забывайте одну важную вещь: применение всех этих &laquo;фишек&raquo; должно быть целесообразным и соответствовать ожиданиям пользователя. Не стоит применять такие эффекты сплошь и рядом  &#8211; можно  получить совсем не тот результат, на который Вы рассчитывали. Это было небольшое лирическое отступление, а теперь &#8211; к делу.<span id="more-23"></span><br />
Как обычно, первым делом рассмотрим работу пары примеров.<br />
Меню слева работает с опциями, установленными по умолчанию. Все, что нужно для создания такого меню (разумеется, кроме библиотеки jQuery и своего HTML-кода), это написать следующее:</p>
<pre class="brush: jscript;">$(&quot;#menuList&quot;).sortable();</pre>
<p>где <strong>#menuList</strong> &#8211; это идентификатор списка.<br />
В меню справа использованы некоторые дополнительно установленные опции. Код конечно немного посложнее, но и в нем нет абсолютно ничего страшного.<br />
<iframe src="http://www.linkexchanger.su/example_jquery/sortable.html" style="border: medium none " width="420" height="250"></iframe></p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/sortable.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>А теперь разберем примеры более подробно. Этот пример для своей корректной работы требует подключения достаточно большого количества различных вспомогательных файлов.</p>
<pre class="brush: xml;">
&lt;script src=&quot;js/jquery-1.2.1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.dimensions.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.mouse.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.draggable.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.draggable.ext.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.droppable.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.droppable.ext.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.sortable.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Все файлы уже знакомы по предыдущим примерам. Добавился только один файл <strong>ui.sortable.js</strong>, который (как и все остальные) мы подключаем в разделе <strong>HEAD</strong> нашей страницы.<br />
Из таблицы стилей остановлюсь только на небольшом моменте, поскольку это по большому счету дело вкуса.</p>
<pre class="brush: css;">.dragStyle {
  background:#CFD4E6;
  border:1px solid #727EA3;
}</pre>
<p>Класс <strong>dragStyle</strong> используется во втором примере и применяется в момент перемещения элемента, отображая то место, на которое перемещаемый элемент будет &laquo;сброшен&raquo;.</p>
<p>Далее полностью приведен кусок кода, который и отвечает за работу обоих списков.</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;#menuList&quot;).sortable(); // 1-ый спискок

  $(&quot;#menuList2&quot;).sortable({ // 2-ой список
	hoverClass: &quot;dragStyle&quot;,
	start: function(ev, ui) {
	  var text = $(ui.draggable.element).text();
	  $(&quot;#result&quot;).text(&quot;Перемещаем &quot; + text);
	},
	stop: function(ev, ui) {
	  $(&quot;#result&quot;).text(&quot;Перемещение окончено!&quot;);
	}
  });
});
&lt;/script&gt;</pre>
<p>Вот так просто. За работу первого списка отвечает всего-навсего одна строка кода. Для второго списка мы используем некоторые дополнительные опции.<br />
<strong>hoverClass</strong> &#8211; опция содержит название класса, который будет применен в процессе перемещения одного из пунктов списка, чтобы указать место, куда перемещаемый пункт будет &laquo;сброшен&raquo;.<br />
<strong>start</strong> &#8211; здесь указываем функцию, которая выполнится в момент старта перемещения элемента списка. В этой функции мы обращаемся к перемещаемому элементу, получаем его содержимое в виде текста и записываем в переменную <strong>text</strong>. Затем отыскиваем элемент <strong>#result</strong> и вставляем текст туда.<br />
<strong>stop</strong> &#8211; указываем функцию, которая выполнится в момент, когда произошел &laquo;сброс&raquo; элемента на нужную позицию (независимо от того изменилась ли фактическая позиция элемента). Тут тоже все предельно просто &#8211; вставляем текст сообщения в элемент <strong>#result</strong>.</p>
<p>Я использовал для примера всего несколько опций, а их полный список опций можно найти на сайте разработчиков библиотеки.</p>
<p>Буду рад, если найдете возможность оставить свой комментарий или задать вопросы.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/23.html/feed</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: создаем аккордеон</title>
		<link>http://www.linkexchanger.su/2008/22.html</link>
		<comments>http://www.linkexchanger.su/2008/22.html#comments</comments>
		<pubDate>Fri, 25 Jan 2008 12:12:59 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[accordion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[аккордеон]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[меню]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/22.html</guid>
		<description><![CDATA[Вы знаете, что такое аккордеон? Правильно &#8211; музыкальный инструмент. А еще аккордеоном называют раскрывающуюся / закрывающуюся панель содержащую какой-либо контент. Его удобно применять, когда содержимое должно быть показано в ограниченном пространстве. Например, есть довольно большое меню, разделенное на разделы, а места, чтобы его отобразить сразу &#8211; просто хватает. Вот тогда и придет на помощь accordion. [...]]]></description>
			<content:encoded><![CDATA[<p>Вы знаете, что такое аккордеон? Правильно &#8211; музыкальный инструмент. А еще аккордеоном называют раскрывающуюся / закрывающуюся панель содержащую какой-либо контент. Его удобно применять, когда содержимое должно быть показано в ограниченном пространстве. Например, есть довольно большое меню, разделенное на разделы, а места, чтобы его отобразить сразу &#8211; просто хватает. Вот тогда и придет на помощь <strong>accordion</strong>. <strong><font color="#ff0000">Внимание! Эта статья устарела!</font></strong> Новую статью можно <a href="http://www.linkexchanger.su/2009/93.html">почитать здесь</a>.<span id="more-22"></span></p>
<p>Посмотрите эти два примера. Пример слева срабатывает по щелчку мышью на панельке-заголовке и имеет довольно интересный эффект &laquo;прыгающего мячика&raquo;, когда панелька падает вниз. Пример справа срабатывает при наведении указателя мыши на панель-заголовок. Тут применен эффект по умолчанию &#8211; простое скольжение.</p>
<blockquote><p>Жалко только, что как всегда в браузере названИЕкоторого Вы знаете без меня, все это выглядит не так прилично как в остальных. Ну, если немного помучаться с CSS, наверняка можно привести все к единообразию).</p></blockquote>
<p><iframe src="http://www.linkexchanger.su/example_jquery/accordion.html" style="border: medium none " width="420" height="360"></iframe></p>
<blockquote><p>Вы можете сохранить <a href="http://www.linkexchanger.su/example_jquery/accordion.zip">исходный код</a> примера и при наличии у Вас библиотеки jQuery, воспроизвести его на своем сайте.</p></blockquote>
<p>Как всегда, нам потребуется подключить саму библиотеку и еще пару-тройку небольших файлов в раздел <strong>HEAD</strong>.</p>
<pre class="brush: xml;">&lt;script src=&quot;js/jquery-1.2.1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.dimensions.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.accordion.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.easing.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Сначала подключаем саму библиотеку, затем файл jquery.dimensions.js (он нам уже знаком &#8211; отвечает за работу с размерами элементов). Интересный нам файл ui.accordion.js &#8211; именно он обеспечивает работу аккордеона. Файл jquery.easing.js понадобится только в том случае, если Вы решите использовать анимацию, отличную от той, что установлена по умолчанию.</p>
<p>HTML и CSS-код приводить не имеет смысла, поскольку он настолько прост, что пояснений не требует. Посмотреть его Вы всегда сможете в исходном коде примера. Не забывайте только, что тот маленький скрипт, код которого я приведу ниже, обращается к элементам по их идентификаторам.</p>
<p>Итак код:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;#example&quot;).accordion({
     animated: &quot;bounceslide&quot;
  });
  $(&quot;#example2&quot;).accordion({
    event: &quot;mouseover&quot;
  });
});
&lt;/script&gt;</pre>
<p>И это все! Мы написали оба аккордеона!<br />
Как всегда весь код обернут в $(document).ready(function(){ &#8230; }); Для первого аккордеона выбран элемент с <strong>id #example</strong>, для второго соответственно <strong>#example2</strong>. В опции <strong>animated</strong> первого аккордеона мы (пользуясь тем, что подключили файл jquery.easing.js) задали интересный эффект, а в опции <strong>event</strong> второго аккордеона указали на то, что срабатывать он должен по событию <strong>mouseover</strong>.</p>
<p>Собственно мы могли поступить еще проще и написать вот так:</p>
<pre class="brush: jscript;">$(&quot;#example&quot;).accordion();</pre>
<p>и такой код прекрасно работал бы, потому, что в файле ui.accordion.js задаются опции по умолчанию.<br />
По умолчанию там заданы опции <strong>animated: slide</strong> и <strong>event: click</strong>, а также очень интересная опция <strong>autoheight: true</strong>. В примере, появляющиеся окошки для отображения контента всегда одинаковы и высота определяется по блоку с максимальным содержимым. Если же опцию <strong>autoheight</strong> установить в <strong>false</strong>, высота будет разная.</p>
<p>Полный список опций можно отыскать на сайте разработчика. Удачи и юзайте jQuery!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/22.html/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: перемещаемый и &#171;сбрасываемый&#187; контент.</title>
		<link>http://www.linkexchanger.su/2008/21.html</link>
		<comments>http://www.linkexchanger.su/2008/21.html#comments</comments>
		<pubDate>Thu, 24 Jan 2008 14:30:46 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[drag-and-drop]]></category>
		<category><![CDATA[draggable]]></category>
		<category><![CDATA[droppable]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[скрипт]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/21.html</guid>
		<description><![CDATA[ Внимание! Эта статья устарела. Новая статья по этой теме: &#171;jQuery UI &#8211; плагин Droppable&#171;. Библиотека jQuery предоставляет возможность не только легко и просто написать код, который позволит свободно перемещать элементы по странице. В ее состав, вернее в состав ее расширений входит функция droppable, которая позволяет также довольно просто написать код, который будет обрабатывать события, [...]]]></description>
			<content:encoded><![CDATA[<p> <font color="#ff0000">Внимание! Эта статья устарела. Новая статья по этой теме: &laquo;<a href="http://www.linkexchanger.su/2009/108.html">jQuery UI &#8211; плагин Droppable</a>&laquo;.</font> Библиотека jQuery предоставляет возможность не только легко и просто написать код, который позволит свободно перемещать элементы по странице. В ее состав, вернее в состав ее расширений входит функция <strong>droppable</strong>, которая позволяет также довольно просто написать код, который будет обрабатывать события, которые происходят в момент окончания перемещения элемента.<br />
Что полезного с практической точки зрения можно сделать, воспользовавшись такой возможностью. Первое, что приходит в голову &#8211; это какая-нибудь интерактивная корзина для интернет-магазина. Вот и попробуем сделать такой пример.<span id="more-21"></span></p>
<p>Как всегда сначала попробуем испытать готовый пример, а затем разберемся как работает этот код. Берем мышкой нужный продукт и тащим его в корзину. Над корзиной отпускаем и смотрим, что получилось&#8230;</p>
<blockquote><p>Чтобы не усложнять код примера, не применяются некоторые проверки, которые должны быть использованы в целях безопасности в реальных интернет-магазинах.</p></blockquote>
<p><iframe src="http://www.linkexchanger.su/example_jquery/droppable.html" style="border: medium none " width="420" height="180"></iframe></p>
<blockquote><p>Вы можете сохранить <a href="http://www.linkexchanger.su/example_jquery/droppable.zip">исходный код</a> примера и при наличии у Вас библиотеки jQuery, воспроизвести его на своем сайте.</p></blockquote>
<p>Чтобы все это работало, нам потребуется подключить к нашей странице, в разделе HEAD довольно много файлов (за исключением самой библиотеки эти файлы не очень большие):</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.dimensions.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.mouse.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.draggable.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.draggable.ext.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.droppable.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.droppable.ext.js&quot;&gt;&lt;/script&gt;</pre>
<p>Большинство их уже знакомы по предыдущим примерам, добавились только ui.droppable.js и ui.droppable.ext.js, которые и обеспечат нам те возможности, которые мы собираемся рассмотреть.</p>
<p>Не будем очень уж внимательно рассматривать таблицу стилей, поскольку здесь в основном это дело вкуса. Остановлюсь только на ее отдельных моментах.</p>
<pre class="brush: css;">
.products {
  float:left;
}
#basket {
  background-color:#e9b96e;
  border:3px double #c17d11;
  width:150px;
  height:120px;
  margin:10px;
  padding:3px;
  position:absolute;
  top:5px;
  right:5px;
}</pre>
<p>В работе примера используются элементы с классом <strong>.products</strong> и идентификатором <strong>#basket</strong> (понятно, что products &#8211; это товары интернет-магазина, а basket &#8211; корзина). Никаких подводных камней тут нет, можно использовать любой стиль отображения этих элементов. Единственное, что необходимо учитывать &#8211; наш скрипт будет обращаться к этим элементам по имени класса и идентификатора.<br />
Можно упомянуть еще два класса из таблицы стилей:</p>
<pre class="brush: css;">
.droppable-active {
	outline:1px dotted #F00;
}
.droppable-hover {
	outline:1px dotted #00F;
}</pre>
<p>Класс <strong>.droppable-active</strong> будет использован скриптом в тот момент, когда процесс перемещения элемента уже начался, но перемещаемый элемент еще не находится &laquo;в зоне действия&raquo; целевого элемента. А класс <strong>.droppable-hover</strong> будет применен, когда перемещаемый элемент окажется над целевым.</p>
<p>Сам HTML-код вообще не представляет собой ничего особенного: несколько картинок, целевой блок, блок вывода результатов. Все это Вы сможете посмотреть, если скачаете файл примера. А вот сам JavaScript, который все это обрабатывает, разберем подробнее. Код получился немножко длинноват, но очень хотелось сделать более-менее красивый пример, а не полуфабрикат&#8230;</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){

// ---- DRAGGABLES &amp; DROPPABLES -----
$(&quot;div.products&quot;).draggable({
  helper: clone,
  opacity: 0.5
});

$(&quot;#basket&quot;).droppable({
  accept: &quot;.products&quot;,
  activeClass: &quot;droppable-active&quot;,
  hoverClass: &quot;droppable-hover&quot;,
  drop: function(ev, ui) {
    var code = $(ui.draggable.element)
    .find(&quot;img&quot;).attr(&quot;id&quot;);
    if($(this).find(&quot;div[@id=&quot;+ code +&quot;]&quot;)
      .html()==null) {
      var name = $(ui.draggable.element)
      .find(&quot;img&quot;).attr(&quot;alt&quot;);
      $(this).append(&quot;
&lt;div class=&quot;basket&quot; id=&quot; + code + &quot;&gt;
&lt;input type=&quot;text&quot; class=&quot;qnt&quot;/&gt; &quot; + name +
&quot;&lt;img src=&quot;droppable-delete.gif&quot; class=&quot;delete&quot;
alt=&quot;Удалить&quot; /&gt;&lt;/div&gt;
&quot;);
    }
  // *******************
  $(&quot;.delete&quot;).click(function () {
    $(this).parent().remove();
  });
  // *******************
  // *******************
  $(&quot;#buy&quot;).click(function () {
    var databox = new Array();
    $(&quot;#basket&quot;).find(&quot;input[@type=text]&quot;)
      .each(function(){
      var qnt = $(this).attr(&quot;value&quot;);
      if(qnt===undefined) { qnt = 0; }
      	var text = $(this).parent().text();
      	databox[databox.length] =  text + &quot; - &quot; + qnt;
      });
      data = databox.join(&quot; кг, &quot;);
      $(&quot;#buyResult&quot;).html(&quot;Вы заказали:&quot; + data +
&quot; кгСпасибо за покупку!&quot;);
    });
  // ****************
  }
});
// ------ DRAGGABLES &amp; DROPPABLES ------
});
&lt;/script&gt;</pre>
<p>Как обычно используем $(document).ready(function(){&#8230;}); которая отслеживает момент готовности объектной модели документа (DOM). В нее &laquo;завернуто&raquo; все, что мы написали. И начнем разбираться дальше.</p>
<pre class="brush: jscript;">
$(&quot;div.products&quot;).draggable({
  helper: clone,
  opacity: 0.5
});</pre>
<p>Это уже должно быть немножко знакомо: выбираем набор элементов <strong>DIV</strong>, имеющих класс <strong>.products</strong> и делаем любой из них свободно перемещаемым, задавая при этом некоторые опции. <strong>helper: clone</strong> &#8211; при перемещении элемента он останется на месте, а перемещать с помошью мыши мы будем его клон, <strong>opacity: 0.5</strong> &#8211; прозрачность которого во время перемещения будет 0,5.</p>
<p>Дальше буду приводить код небольшими кусочками, чтобы было легче разбираться.<br />
<code></code></p>
<pre class="brush: jscript;">
$(&quot;#basket&quot;).droppable({
  accept: &quot;.products&quot;,
  activeClass: &quot;droppable-active&quot;,
  hoverClass: &quot;droppable-hover&quot;</pre>
<p>Выбираем элемент с идентификатором <strong>basket</strong> и делаем его <strong>droppable</strong> &#8211; туда будем &laquo;сбрасывать&raquo; перемещаемые элементы. Далее устанавливаем необходимые опции:<br />
<strong>accept: &laquo;.products&raquo;</strong> &#8211; &laquo;сбросить&raquo; мы можем только элементы, имеющие класс <strong>products</strong>.<br />
<strong>activeClass: &laquo;droppable-active&raquo;</strong> &#8211; имя класса, который будет применен к <strong>#basket</strong> во время перемещения любого из элементов с классом <strong>.products</strong>, но до того, как перемещаемый элемент окажется &laquo;в зоне действия&raquo; элемента <strong>#basket</strong>.<br />
<strong>hoverClass: &laquo;droppable-hover&raquo;</strong> &#8211; все тоже самое, только класс будет применен тогда, когда перемещаемый элемент попадет в &laquo;зону действия&raquo; элемента <strong>#basket</strong>.<br />
В опции <strong>drop</strong> &#8211; устанавливается функция, которая должна будет выполниться в момент, когда мы &laquo;сбросили&raquo; перемещаемый элемент. Простор для фантазии &#8211; обрабатывайте данные как угодно. Я кратко немного прокомментирую, что написано дальше.</p>
<pre class="brush: jscript;">
var code = $(ui.draggable.element)
.find(&quot;img&quot;).attr(&quot;id&quot;);</pre>
<p>Мы обращаемся к перемещаемому элементу, находим в нем (именно в нем) элемент <strong>img</strong> и получаем значение его атрибута <strong>id</strong>. Сохраняем в переменной <strong>code</strong>.</p>
<pre class="brush: jscript;">if($(this).find(&quot;div[@id=&quot;+ code +&quot;]&quot;).html()==null)</pre>
<p>Здесь будем проверять, нет ли уже в нашей корзине товара с таким же <strong>id</strong>. Для этого обратимся к элементу, который представляет собой нашу корзину (<strong>this</strong> в данном случае тоже самое, что и <strong>#basket</strong>), найдем элемент <strong>div</strong> с <strong>id</strong> равным <strong>id</strong> перемещаемого элемента (хранится в переменной <strong>code</strong>) и получим его HTML-код. Сравним с <strong>null</strong>. Если условие верное, значит такого продукта в корзине еще нет и мы можем выполнять следующие операторы, чтобы добавить товар в корзину.</p>
<pre class="brush: jscript;">var name = $(ui.draggable.element)
.find(&quot;img&quot;).attr(&quot;alt&quot;);</pre>
<p>Обращаемся к перемещаемому элементу (это уже делали, правда?), ищем <strong>img</strong>, получаем значение атрибута <strong>alt</strong>, где у нас хранится название товара.<br />
Теперь осталось только сформировать нужный HTML-код и добавить его в корзину, т.е. в элемент <strong>#basket</strong>.</p>
<pre class="brush: jscript;">$(this).append('&lt;p class=&quot;basket&quot; id=' + code + '&gt;
&lt;input class=&quot;qnt&quot; type=&quot;text&quot; /&gt; ' + name +
'&lt;img src=&quot;droppable-delete.gif&quot; class=&quot;delete&quot; alt=&quot;Удалить&quot; /&gt;');&lt;/p&gt;</pre>
<p>Тут вроде бы все достаточно понятно. И осталось написать еще пару вспомогательных функций, чтобы пример был хоть немного действующим. Приводить их еще раз тут не  буду (можете посмотреть их в полном коде), просто поясню, что первая обрабатывает клик мышкой на картинке удаления товара из корзины и собственно удаляет выбранный элемент <strong>div</strong>. А вторая обходит все имеющиеся текстовые поля ввода, собирает их значения в массив, объединяет массив в строку и выводит результат в виде HTML-кода в элемент <strong>#buyResult</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/21.html/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: свободно перемещаемый контент.</title>
		<link>http://www.linkexchanger.su/2008/18.html</link>
		<comments>http://www.linkexchanger.su/2008/18.html#comments</comments>
		<pubDate>Fri, 18 Jan 2008 11:35:26 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[draggable]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интерфейс]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/18.html</guid>
		<description><![CDATA[Внимание! Эта статья устарела. Новая статья по этой теме: &#171;jQuery UI &#8211; плагин Draggable&#171;. Давайте продолжим знакомство с элементами пользовательских интерфейсов, которые можно создавать на базе библиотеки jQuery. Попробуем создавать элементы, которые можно будет свободно перемещать по странице с помощью мыши. Вы наверняка уже встречали такие &#171;фичи&#187;. Оказывается, с помощью jQuery сделать это самому не [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">Внимание! Эта статья устарела. Новая статья по этой теме: &laquo;<a href="http://www.linkexchanger.su/2009/107.html">jQuery UI &#8211; плагин Draggable</a>&laquo;.</font> Давайте продолжим знакомство с элементами пользовательских интерфейсов, которые можно создавать на базе библиотеки jQuery. Попробуем создавать элементы, которые можно будет свободно перемещать по странице с помощью мыши. Вы наверняка уже встречали такие &laquo;фичи&raquo;. Оказывается, с помощью jQuery сделать это самому не составляет почти никакого труда!<span id="more-18"></span><br />
Опять же обратимся к сайту разработчиков библиотеки. Там приведен вот такой простой код:</p>
<pre class="brush: jscript;">$(&quot;.block&quot;).draggable();</pre>
<p>И это почти все! В этом коде сообщается, что перемещаемыми элементами становятся все элементы с классом <strong>block</strong>. Но опять же, разработчики предлагают большой набор различных опций, с помощью которых можно извлекать какую-либо практическую пользу. Иначе зачем таскать блоки по странице? Только лишь с целью поразить пользователя? Нет конечно.<br />
Давайте сначала посмотрим пример того, как это работает, а затем мы разберем код, который обеспечивает эту возможность. В примере задана опция возврата элемента на исходную позицию после окончания его перемещения.<br />
<iframe src="http://www.linkexchanger.su/example_jquery/draggable.html" style="border: medium none " width="400" height="300"></iframe></p>
<blockquote><p>Вы можете сохранить <a href="http://www.linkexchanger.su/example_jquery/draggable.zip">исходный код</a> примера и при наличии у Вас  библиотеки jQuery, воспроизвести его на своем сайте.</p></blockquote>
<p>Для того, чтобы элементы действительно стали перемещаемыми, нам потребуется подключить к нашей странице, в разделе <strong>HEAD</strong> четыре файла:</p>
<pre class="brush: xml;">
&lt;script src=&quot;js/jquery-1.2.1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.mouse.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.draggable.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/ui.draggable.ext.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Первым подключается библиотека jQuery, а затем &#8211; файл, выполняющий обработку событий мышки. Два следующих файла работают непосредственно над перемещением элементов по странице.<br />
Далее в этом же разделе <strong>HEAD</strong> следует таблица стилей в которой мы определим класс (это может быть например и идентификатор) для элементов, которые хотим сделать свободно перемещаемыми.<br />
И наконец код&#8230; Естественно, в примере используются не все возможные опции, но я думаю, что сами принципы пример может продемонстрировать неплохо.</p>
<pre class="brush: jscript;">
$(document).ready(function(){
    $(&quot;.block&quot;).draggable({
        revert: true,
        drag: function(e,ui) {
            $(this).css(&quot;background-color&quot;,&quot;#E2F2E2&quot;);
            $(&quot;#position&quot;).text(&quot;Положение перемещаемого
            элемента - слева: &quot; + ui.position.left + &quot;px,
            а сверху: &quot; + ui.position.top + &quot;px&quot;);
        },
        stop: function(e,ui) {
            $(this).css(&quot;background-color&quot;, &quot;#58AEFC&quot;);
        }
    });
});
</pre>
<p>Весь код &laquo;обернут&raquo; уже немного знакомой нам</p>
<pre class="brush: jscript;">
$(document).ready(function(){
...
});</pre>
<p>которая отслеживает момент готовности объектной модели документа (DOM).</p>
<blockquote><p>Это чем-то похоже на событие onload, но в отличие от него разрешает выполнение javascript сразу после того, как DOM готова к работе, а не после полной загрузки страницы.</p></blockquote>
<p>Итак, вначале мы сообщаем, что перемещаемыми элементами будут все элементы с классом <strong>block</strong>. А затем просто перечисляем те опции, которые мы хотим использовать.</p>
<p><strong>revert: true</strong> указывает на то, что после окончания процесса перетаскивания, элемент должен вернуться на прежнее место.<br />
Опция <strong>drag</strong> содержит функцию, которая будет выполняться во время самого процесса перетаскивания элемента. В этой функции мы сначала задаем свойство background-color для перетаскиваемого элемента (по-русски &#8211; меняем его цвет), а затем в элемент с идентификатором <strong>#position</strong> вставляем строку текста, в которой сообщаем текущее пололжение левого верхнего угла перетаскиваемого элемента относительно окна браузера.<br />
В опции <strong>stop</strong> мы определяем функцию, которая выполнится в момент остановки процесса перемещения элемента и просто вернет цвет элемента к начальному.</p>
<p>Вот и все. Далее я привожу всего несколько опций. Полный их перечень можно найти на сайте разработчиков библиотеки jQuery.</p>
<p><strong>axis</strong> &#8211; ограничивает перемещение по горизонтальной (x) или вертикальной (y) осям.<br />
<strong>containment</strong> &#8211; ограничивает перемещение к в пределах границ указанного элемента &#8211; может быть элемент DOM, родительский элемент, документ или селектор jQuery.<br />
<strong>effect</strong> &#8211; эффекты от начала перемещения до остановки. Возможно например FadeIn при старте и FadeOut при остановке.<br />
<strong>opacity</strong> &#8211; прозрачность перемещаемого элемента.<br />
<strong>revert</strong> &#8211; если истина, элемент вернется на позицию откуда было начато перемещение.<br />
<strong>start(e,ui), drag(e,ui) и stop(e,ui)</strong> &#8211; функции, которые могут вызываться при начале, окончании или процессе перетаскивания элементов.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/18.html/feed</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Пользовательские интерфейсы jQuery: создаем слайдер.</title>
		<link>http://www.linkexchanger.su/2008/13.html</link>
		<comments>http://www.linkexchanger.su/2008/13.html#comments</comments>
		<pubDate>Wed, 16 Jan 2008 14:10:02 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[интерфейс]]></category>
		<category><![CDATA[ползунок]]></category>
		<category><![CDATA[слайдер]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/13.html</guid>
		<description><![CDATA[Если Вы уже немного познакомились с библиотекой jQuery, может быть уже скачали ее и немного помучали, давайте перейдем к чисто практической части и попробуем создать слайдер на основе плагина, включенного в состав библиотеки. Что такое слайдер? Может быть при своих путешествиях по сети Вы уже встречали что-то вроде линейки с одним или двумя &#171;ползунками&#187;, которые [...]]]></description>
			<content:encoded><![CDATA[<p>Если Вы уже немного познакомились с библиотекой jQuery, может быть уже скачали ее и немного помучали, давайте перейдем к чисто практической части и попробуем создать слайдер на основе плагина, включенного в состав библиотеки. Что такое слайдер? Может быть при своих путешествиях по сети Вы уже встречали что-то вроде линейки с одним или двумя &laquo;ползунками&raquo;, которые пользователь может перемещать с помощью мыши, выбирая таким образом значение (диапазон значений) чего-либо. <strong><font color="#ff0000">Внимание! Эта статья устарела!</font></strong> Новую статью можно <a href="http://www.linkexchanger.su/2009/97.html">почитать здесь</a>.<span id="more-13"></span><br />
На сайте разработчиков приведен пример того, как просто это сделать:</p>
<pre class="brush: jscript;">$(&quot;#example&quot;).slider();</pre>
<p>Но конечно же далеко не все так просто. Для начала посмотрите пример того, как это работает, а затем мы разберем по шагам весь код, который обеспечивает работу слайдера.<br />
<iframe src="http://www.linkexchanger.su/example_jquery/slider.html" style="border: 1px dotted #00598c" width="400" height="80"></iframe></p>
<blockquote><p>Вы можете сохранить <a href="http://www.linkexchanger.su/example_jquery/slider.zip">исходный код</a> примера и при наличии у Вас  библиотеки jQuery, воспроизвести его на своем сайте.</p></blockquote>
<p>А теперь давайте разберем код. Я буду приводить только те блоки кода, на которые необходимо обратить внимание и сразу же давать пояснения, опуская незначительные в данном примере детали.<br />
Итак, в разделе <strong>HEAD</strong> нашей страницы необходимо подключить четыре файла. Вот так:</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.dimensions.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.mouse.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/ui.slider.js&quot;&gt;&lt;/script&gt;</pre>
<p>Здесь первым подключается собственно библиотека jQuery, затем плагин, который отвечает за работу с размерами элементов, далее &#8211; файл, выполняющий обработку событий мышки и наконец тот самый файл, который и позволит нам создать свой слайдер.</p>
<p>Далее в этом же разделе <strong>HEAD</strong> включена таблица стилей. Здесь Вы можете творить, что душе угодно, но обратите особенное внимание на классы <strong>.ui-slider</strong> и <strong>.ui-slider-handle</strong>. Их не стоит переименовывать, так как именно с этими классами работает файл ui.slider.js. Все остальное не так важно &#8211; это уже дело вкуса.</p>
<p>Ну  и наконец мы добрались до самого интересного места &#8211; кода, который создает слайдер и работает с ним. Это особенное место, поэтому здесь я приведу этот код полностью.</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  $(&quot;#Slider&quot;).slider({
    stepping: 1,
    minValue: 0,
    maxValue: 10,
    slide: function(e,ui) {
      $(&quot;#minResult&quot;).text( ui.values[0] );
      $(&quot;#maxResult&quot;).text( ui.values[1] );
    },
    stop: function(e,ui) {
      $(&quot;#textResult&quot;).text(&quot;Выбран диапазон значений от &quot;
      + ui.values[0] + &quot; до &quot; + ui.values[1]);
    }
  });
});
&lt;/script&gt;</pre>
<p>Код самого слайдера отделен комментариями, а начинается код очень интересной функцией</p>
<pre class="brush: jscript;">
$(document).ready(function(){
...
});</pre>
<p>которая отслеживает момент готовности DOM. С ней мы познакомимся позднее, а пока продолжим разбирать сам слайдер.<br />
В первой строке мы в общем просто сообщаем, что слайдером будет служить некий элемент с идентификатором <strong>#Slider</strong>. И далее задаем значения шага <strong>stepping: 1</strong>, минимального и максимального значения шкалы <strong>minValue: 0</strong> и  <strong>maxValue: 10</strong>, затем сообщаем, что в момент перемещения движка надо отслеживать его значения и передавать минимальное и максимальное значения в соответственно в элементы с идентификаторами <strong>#minResult</strong> и <strong>#maxResult</strong> и в тот момент, когда Вы отпускаете клавишу мыши, в элемент с идентификатором <strong>#textResult</strong> будет вставлена строка текста, в которую будут включены окончательные минимальное и максимальное значения.<br />
Что делать с этими значениями дальше &#8211; решать Вам самим. Можно например передать их с помощью Ajax-запроса какому-либо файлу, который обратится к базе данных, выберет необходимые значения, определенные данными, снятыми со слайдера и вернет результат обратно в браузер пользователя.<br />
Вот так. В общем не очень сложно.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/13.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

