<?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>Лобач.info &#187; javascript</title>
	<atom:link href="http://lobach.info/category/develop/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://lobach.info</link>
	<description>Заметки LAMP-программиста о вебдеве и не только...</description>
	<lastBuildDate>Tue, 13 Jul 2010 14:56:43 +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</title>
		<link>http://lobach.info/develop/javascript/again-about-scroller-and-jquery/</link>
		<comments>http://lobach.info/develop/javascript/again-about-scroller-and-jquery/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 08:43:09 +0000</pubDate>
		<dc:creator>Лобач Олег</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[примеры]]></category>

		<guid isPermaLink="false">http://lobach.info/?p=146</guid>
		<description><![CDATA[Больше года назад я уже писал о примере реализации скроллера на jQuery. Смысл скроллера состоял в том, что нужно было сделать &#171;бесконечную&#187; ленту неких объектов и отображать в их в небольшом окошке, в котором эта лента как-бы прокручивается. Реализация получилась вполне работоспособная, хоть и не без недостатков.

А совсем недавно мне снова потребовался скроллер, но горизонтальный [...]]]></description>
			<content:encoded><![CDATA[<p>Больше года назад я уже писал о <a href="/develop/javascript/slideup-scroller/" title="статья 'Пример создания SlideUp скроллера с помощью jQuery'">примере реализации скроллера на jQuery</a>. Смысл скроллера состоял в том, что нужно было сделать &laquo;бесконечную&raquo; ленту неких объектов и отображать в их в небольшом окошке, в котором эта лента как-бы прокручивается. Реализация получилась вполне работоспособная, хоть и не без недостатков.</p>
<p><span id="more-146"></span></p>
<p>А совсем недавно мне снова потребовался скроллер, но горизонтальный и управляемый пользователем (в отличии от предыдущего вертикального и автоскролируемого). Изобретать велосипед снова мне было лениво и я решил проверить, есть ли плагины для jQuery с нужным мне функционалом. Перепробовал я массу разных плагинов (упоминать о них смысла нет) пока не набрел на настоящую жемчужину! Идеальный для моей задачи плагин&nbsp;&mdash; <strong>Scrollable</strong> (<a href="http://plugins.jquery.com/project/scrollable" title="Страница плагина в каталоге jQuery">страница в каталоге</a> и <a href="http://www.flowplayer.org/tools/scrollable.html" title="Домашняя страница плагина Scrollable">домашняя страница</a>).</p>
<p>Плагин совершенно замечательный&nbsp;&mdash; масса возможностей, прост в использовании, понятные примеры, приятный код.</p>
<p><strong>Фичи:</strong></p>
<ul>
<li>горизонтальный и вертикальный скролинг</li>
<li>скролинг при помощи навигационных кнопок, вызовов API, курсорных клавиш на клавиатуре и колесом прокрутки на мыше</li>
<li>настраиваемое количество элементов скролируемых за раз</li>
<li>настраивание навигационных кнопок без единой строчки JavaScript</li>
<li>постраничное скролирование</li>
<li>действия, вызываемые программно: next, prev, nextPage, prevPage, seekTo, begin, end ...</li>
<li>динамическое добавление и удаление элементов</li>
<li>автоматически скролинг</li>
<li>возможность настроить поведение скролинга с помощью листенеров onBeforeSeek и onSeek</li>
<li>размер минимизированного файла около 6.0K</li>
</ul>
<p>Применил я этот плагин для организации вывода постраничной навигации. На мой взгляд получилось достаточно удобно&nbsp;&mdash; легко можно добраться до любой страницы. Правда у этого способа тоже есть недостаток&nbsp;&mdash; если страниц уж очень много, то это становится неудобно для пользователя и тяжеловато для браузера. Мы решили ограничиться 100 страницами, а остальные просо отбрасываем.</p>
<p>Была у мне с этим плагином одна непонятка: не срабатывали вызовы API. Моя логика (основываясь на курении доки) подсказывала такой способ вызова:</p>
<pre><code class="javascript">var api = $("div.scrollable").scrollable();
api.click(10); // для перехода к десятому элементу</code></pre>
<p>Но этот код работать не захотел. Пришлось извратиться так:</p>
<pre><code class="javascript">$("div.scrollable").scrollable();
$("div.scrollable").scrollable().click(10);</code></pre>
<p>Если кто-нибудь подскажет более красивое решение или объяснит где я неправ в своих хотелках&nbsp;&mdash; буду очень признателен.</p>
<p>Еще статьи об этом плагине:</p>
<ul>
<li><a href="http://vremenno.net/js/jquery-scrolling-plugin/" title="Скроллер содержимого на jQuery">Скроллер содержимого на jQuery</a></li>
<li><a href="http://blog.webmasterschool.ru/javascript/200/" title="Навигация с использованием jQuery">Навигация с использованием jQuery</a></li>
</ul>

	Tags: <a href="http://lobach.info/tag/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://lobach.info/tag/jquery/" title="jQuery" rel="tag">jQuery</a>, <a href="http://lobach.info/tag/plugins/" title="plugins" rel="tag">plugins</a>, <a href="http://lobach.info/tag/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b/" title="примеры" rel="tag">примеры</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://lobach.info/develop/javascript/slideup-scroller/" title="Пример создания SlideUp скроллера с помощью jQuery (27.01.2008)">Пример создания SlideUp скроллера с помощью jQuery</a> (8)</li>
	<li><a href="http://lobach.info/develop/zf/creating-re-usable-zend_application-resource-plugins/" title="Создание повторно используемых плагинов ресурсов Zend_Application (08.02.2010)">Создание повторно используемых плагинов ресурсов Zend_Application</a> (0)</li>
	<li><a href="http://lobach.info/develop/javascript/croossdomain-ajax-request/" title="Как сделать ajax-запрос на другой домен? (11.07.2008)">Как сделать ajax-запрос на другой домен?</a> (13)</li>
	<li><a href="http://lobach.info/develop/svn/svn-externals/" title="Внешние зависимости (11.02.2008)">Внешние зависимости</a> (1)</li>
	<li><a href="http://lobach.info/develop/zf/enable-conditional-get-in-zend-framework-app/" title="Включение условных запросов в приложениях на Zend Framework (07.04.2009)">Включение условных запросов в приложениях на Zend Framework</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/javascript/again-about-scroller-and-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как сделать ajax-запрос на другой домен?</title>
		<link>http://lobach.info/develop/javascript/croossdomain-ajax-request/</link>
		<comments>http://lobach.info/develop/javascript/croossdomain-ajax-request/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 18:45:37 +0000</pubDate>
		<dc:creator>Лобач Олег</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[java-script]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://lobach.info/develop/javascript/croossdomain-ajax-request/</guid>
		<description><![CDATA[Вчера по долгу службы пришлось разбираться с кросс-доменными ajax-запросами. Суть проблемы была в следующем: мне нужно было, чтобы мой скрипт отправлял с нескольких сайтов запросы на один сервер, собирающий некоторые данные. Политика безопасности браузеров запрещает это делать через обычный XHTTPRequest.
Погуглив и проведя ряд экспериментов у меня получилось вот что.

Примечание: Ниже я приведу готовое решение. А [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера по долгу службы пришлось разбираться с кросс-доменными ajax-запросами. Суть проблемы была в следующем: мне нужно было, чтобы мой скрипт отправлял с нескольких сайтов запросы на один сервер, собирающий некоторые данные. Политика безопасности браузеров запрещает это делать через обычный XHTTPRequest.</p>
<p>Погуглив и проведя ряд экспериментов у меня получилось вот что.</p>
<p><span id="more-42"></span></p>
<strong>Примечание</strong>: <em>Ниже я приведу готовое решение. А для желающих обрести теоретическую подкованность, предлагаю к прочтению:
<ul>
<li>&laquo;<a href="http://javascript.ru/ajax/cross-domain-scripting">Обмен данными для документов с разных доменов</a>&raquo;,</li>
<li>&laquo;<a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">Remote JSON&nbsp;&mdash; JSONP</a>&raquo;,</li>
<li>&laquo;<a href="http://ajaxian.com/archives/jsonp-json-with-padding">JSONP: JSON With Padding</a>&raquo;</li>
<li> и применительно к jQuery статья &laquo;<a href="http://www.linkexchanger.su/2008/34.html">jQuery и Ajax: запросы</a>&raquo;</li>
</ul>
<p></em></p>
<p>Итак, для отправки запросов я воспользуюсь библиотекой <a href="http://jquery.com/">jQuery</a>. С версии 1.2 эта библиотека поддерживает JSONP нативно. Вот, собственно сам код для выполнения запроса:</p>
<pre><code class="javascript">$.getJSON("http://server.ru/logger.php?callback=?", function(data){
    // тут обрабатываем полученные данные
});</code></pre>
<p>Обратите внимание на параметр &laquo;callback=?&raquo; в адресе, на который отправляется запрос. Вместо вопроса jquery подставит название callback-функции. Эта callback-функция будет вызвана при получении ответа от сервера. Учтем это в серверной части.</p>
<pre><code class="php">&lt;?php
    echo $_GET['callback']."({param1:'value',param2:0});";
?&gt;</code></pre>
<p>Т.е. выход скрипта должен генерировать не просто JSON, а вызов callback-функции и передачей ей параметров, которые нужно передать от сервера клиенту.</p>
<p>Вот, собственно и вся премудрость. Если возникнут вопросы, задавайте в комментариях, я постараюсь на них ответить</p>

	Tags: <a href="http://lobach.info/tag/ajax/" title="ajax" rel="tag">ajax</a>, <a href="http://lobach.info/tag/java-script/" title="java-script" rel="tag">java-script</a>, <a href="http://lobach.info/tag/jquery/" title="jQuery" rel="tag">jQuery</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://lobach.info/develop/javascript/slideup-scroller/" title="Пример создания SlideUp скроллера с помощью jQuery (27.01.2008)">Пример создания SlideUp скроллера с помощью jQuery</a> (8)</li>
	<li><a href="http://lobach.info/develop/javascript/again-about-scroller-and-jquery/" title="Снова про скроллер и jQuery (30.04.2009)">Снова про скроллер и jQuery</a> (0)</li>
	<li><a href="http://lobach.info/some/rit2008-first-day/" title="Впечатления от первого дня РИТ-2008 (14.04.2008)">Впечатления от первого дня РИТ-2008</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/javascript/croossdomain-ajax-request/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>&#171;Зебра&#187; в таблице ExtJS</title>
		<link>http://lobach.info/develop/javascript/zebra-table/</link>
		<comments>http://lobach.info/develop/javascript/zebra-table/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 08:09:12 +0000</pubDate>
		<dc:creator>Лобач Олег</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://lobach.info/develop/javascript/zebra-table/</guid>
		<description><![CDATA[Пост из серии &#171;не забыть как делать&#187;.
Мне последнее время приходится достаточно плотно заниматься разработкой на отличном javascript-фреймворке ExtJS и, в частности, много работать с таблицами. Чтобы визуально приукрасить и сделать таблицы более юзабельными я сделал для них т.н. &#171;зебру&#187;, т.е. чересстрочную раскраску. Далее я расскажу как это сделать.

Я не буду приводить полный код таблицы, только [...]]]></description>
			<content:encoded><![CDATA[<p>Пост из серии &laquo;не забыть как делать&raquo;.</p>
<p>Мне последнее время приходится достаточно плотно заниматься разработкой на отличном javascript-фреймворке <a href="http://extjs.com/">ExtJS</a> и, в частности, много работать с таблицами. Чтобы визуально приукрасить и сделать таблицы более юзабельными я сделал для них т.н. &laquo;зебру&raquo;, т.е. чересстрочную раскраску. Далее я расскажу как это сделать.</p>
<p><span id="more-41"></span></p>
<p>Я не буду приводить полный код таблицы, только тот кусок, который отвечает за &laquo;зебру&raquo;:</p>
<pre><code>Example.grid = Ext.extend(Ext.grid.GridPanel, {
    initComponent:function() {
        Ext.apply(this, {
            store:....,
            columns:...,
            viewConfig: {forceFit: true}
        });
        Example.grid.superclass.initComponent.apply(this, arguments);
    },
    onRender:function() {
        Example.grid.superclass.onRender.apply(this, arguments);
        this.getView().getRowClass = function(record,index) {
            return (index%2)?'odd':'even';
        }
    }
});</code></pre>
<p>За создание &laquo;зебры&raquo;, собственно, отвечает код, расположенный в обработчике события &laquo;onRender&raquo;. Этот код определяет функцию &laquo;getRowClass&raquo; объекта GridView нашей таблицы. Определяемая функция должна возвращать название css-класса, которое будет присвоено текущей строке. Эта функция будет вызвана для каждой строки, а на вход ей будет переданы текущая запись и номер строки. Для зебры достаточно знать номер строки и в зависимости от четности этого номера вернуть то или иное название класса. Не забудьте определить эти классы в своем файле стилей, иначе никаких визуальных изменений не увидите.</p>

	Tags: <a href="http://lobach.info/tag/extjs/" title="extjs" rel="tag">extjs</a>, <a href="http://lobach.info/tag/js/" title="js" rel="tag">js</a>, <a href="http://lobach.info/tag/sovety/" title="советы" rel="tag">советы</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li>Нет похожих записей</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/javascript/zebra-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример создания SlideUp скроллера с помощью jQuery</title>
		<link>http://lobach.info/develop/javascript/slideup-scroller/</link>
		<comments>http://lobach.info/develop/javascript/slideup-scroller/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 12:04:14 +0000</pubDate>
		<dc:creator>Лобач Олег</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[java-script]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[примеры]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://lobach.info/develop/javascript/slideup-scroller/</guid>
		<description><![CDATA[Понадобилось мне сделать эффект скроллирования списка с цикличным повтором элементов. Т.е. список как бы закольцован и закрыт от взгляда пользователя за исключением небольшой области, в которую видно несколько элементов списка. При этом область, видимая пользователю, должна двигаться над списком. Надеюсь реализация прояснит возможные вопросы от такой постановки задачи :)

Сразу понятно, что задачу без яваскрипта не [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне сделать эффект скроллирования списка с цикличным повтором элементов. Т.е. список как бы закольцован и закрыт от взгляда пользователя за исключением небольшой области, в которую видно несколько элементов списка. При этом область, видимая пользователю, должна двигаться над списком. Надеюсь реализация прояснит возможные вопросы от такой постановки задачи :)</p>
<p><span id="more-17"></span></p>
<p>Сразу понятно, что задачу без яваскрипта не решить. Ну а так как анимацию делать самостоятельно мне было лень, я решил воспользоваться своим любимым фреймворком&nbsp;&mdash; <a href="http://jquery.com/">jQuery</a>.</p>
<p>Начнем с заготовки html-страницы:</p>
<pre><code class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html lang="ru"&gt;
&lt;head&gt;
    &lt;meta content="text/html; charset=UTF-8" http-equiv="content-type"&gt;
    &lt;title&gt;SlideUp Scroller example&lt;/title&gt;
    &lt;script src="jquery.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Добавим список:</p>
<pre><code class="html">...
&lt;body&gt;
&lt;div class="scroller"&gt;
&nbsp; &lt;ul id="frame"&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #1&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #2&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #3&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #4&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #5&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #6&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #7&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #8&lt;/li&gt;
&nbsp;&nbsp;&nbsp; &lt;li&gt;Test block #9&lt;/li&gt;
&nbsp; &lt;/ul&gt;
&lt;/div&gt;
&lt;/body&gt;
...</code></pre>
<p>В стиле зададим высоту видимой части списка и высоту каждого элемента:</p>
<pre><code class="css">.scroller {
    height: 150px;
    overflow: hidden;
  }
  #frame {
    margin-top: -30px;
  }
  li {
    height: 30px;
    line-height: 30px;
  }</code></pre>
<p>У контейнера (DIV с классом &laquo;scroller&raquo;) я задал высоту 150 пикселей и установил свойство <strong>overflow</strong> в <strong>hidden</strong> для того, чтобы скрыть лишние элементы списка. А у самого списка я сделал отрицательный отступ сверху равный высоте одного элемента (кстати, в самом списке первым присутствует пустой элемент&nbsp;&mdash; ниже я объясню зачем). Высота строки для элемента задана просто для красоты.</p>
<p>А теперь перейдем к самому яваскрипту:</p>
<pre><code class="javascript">&nbsp;&nbsp;&nbsp; var topElementId = '0', t;

&nbsp;&nbsp;&nbsp; $(document).ready(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var el =$('#frame').children();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // проверяем количество элементов в списке: если элементов больше
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // чем вмещается в видимую область, то начинаем скролирование
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (el.size() &gt; 6) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // присваиваем каждому элементу списка свой ID
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el.each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).attr('id','row'+i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // запускаем таймер. число задает количество милисекунд между
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // загрузкой страницы и началом скролирования
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = setTimeout('listSlideUp()', 3000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; });
&nbsp;&nbsp;&nbsp; function listSlideUp() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // для самого верхнего элемента списка (не видимого на странице)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // вызываем функцию плавного уменьшения высоты
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $('#row'+topElementId).slideUp(2000, function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // тут определяем кол-бэк функцию, выполняющуюся после завершения
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // работы slideup
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // если текущий элемент не вспомогательный,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // то переносим его в конец списка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (topElementId &gt; 0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // создаем копию верхнего элемента
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var topElement = jQuery('#row'+topElementId).clone().show();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // убираем верхний элемент из списка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $('#row'+topElementId).remove();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // добавляем скопированный элемент в конец списка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $('#frame').append(topElement);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; topElementId++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // если номер верхнего элемента больше количества элементов,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // то сбрасываем его в 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (topElementId &gt;= jQuery('#frame').children().size()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; topElementId = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // опять запускаем таймер
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = setTimeout('listSlideUp()', 4000);
&nbsp;&nbsp;&nbsp; }</code></pre>
<p>Алгоритм работы скрипта очень прост. Через равные промежутки времени вызывается функция, которая плавно уменьшает высоту верхнего (невидимого) элемента до 0. После чего этот элемент переносится в конец списка и цикл повторяется снова.</p>
<p>У скрипта есть два недостатка: использование глобального пространства имен и необходимость фиксировать высоту элементов. Может у кого-нибудь возникнут идеи по устранению этих недостатков? Тогда велком в комментарии...</p>
<p>Для желающих посмотреть результат работы скрипта, я выложил архив со всем необходимым&nbsp;&mdash; <a href='http://lobach.info/wp-content/uploads/2008/01/slider-example.zip' title='Код скрипта SlideUp-scroller'>код скрипта SlideUp-scroller</a> (16кб)</p>
<p><strong>Upd:</strong> У всем любимого (в плохом смысле слова...) ослика обнаружилась неприятная особенность&nbsp;&mdash; дерганье при слайдАп-эффекте на теге LI. Пришлось переделать на использование DIV-ов. Новый архив забираем тут: <a href='http://lobach.info/wp-content/uploads/2008/01/slider-example1.zip' title='Код скрипта SlideUp-scroller (IE-bugfix)'>SlideUp-scroller (IE-bugfix)</a></p>
<p><strong>PS:</strong> Прошу в комментариях отписаться о работе скрипта в различных браузерах.</p>

	Tags: <a href="http://lobach.info/tag/java-script/" title="java-script" rel="tag">java-script</a>, <a href="http://lobach.info/tag/jquery/" title="jQuery" rel="tag">jQuery</a>, <a href="http://lobach.info/tag/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b/" title="примеры" rel="tag">примеры</a>, <a href="http://lobach.info/tag/%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0/" title="разработка" rel="tag">разработка</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://lobach.info/develop/javascript/again-about-scroller-and-jquery/" title="Снова про скроллер и jQuery (30.04.2009)">Снова про скроллер и jQuery</a> (0)</li>
	<li><a href="http://lobach.info/develop/javascript/croossdomain-ajax-request/" title="Как сделать ajax-запрос на другой домен? (11.07.2008)">Как сделать ajax-запрос на другой домен?</a> (13)</li>
	<li><a href="http://lobach.info/develop/zf/custom-zend_application-resources/" title="Пользовательские ресурсы для Zend_Application (13.01.2010)">Пользовательские ресурсы для Zend_Application</a> (0)</li>
	<li><a href="http://lobach.info/some/rit2008-first-day/" title="Впечатления от первого дня РИТ-2008 (14.04.2008)">Впечатления от первого дня РИТ-2008</a> (3)</li>
	<li><a href="http://lobach.info/develop/svn/svn-externals/" title="Внешние зависимости (11.02.2008)">Внешние зависимости</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/javascript/slideup-scroller/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Как запустить какое-либо действие JS вводом последовательности символов?</title>
		<link>http://lobach.info/develop/javascript/hot-words/</link>
		<comments>http://lobach.info/develop/javascript/hot-words/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 11:25:17 +0000</pubDate>
		<dc:creator>Лобач Олег</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://lobach.info/javascript/hot-words/</guid>
		<description><![CDATA[Сегодня заметка будет коротенькая.
Мне прислали ссылку на довольно простой способ запуска некоторого действия не по клику на объекте, а набором на клавиатуре некоторых &#171;команд&#187;. Вот, собственно, сама заметка &#171;Горячие слова&#187;
&#171;Трактористы&#187; могут придумать массу примеров, где этот скрипт можно использовать. Например, &#171;скрытые&#187; функции на сайте, запускаемые вводом &#171;секретных команд&#187;, или &#171;быстрый&#187; переход по объектам административного интерфейса.
Предлагаю [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня заметка будет коротенькая.</p>
<p>Мне прислали ссылку на довольно простой способ запуска некоторого действия не по клику на объекте, а набором на клавиатуре некоторых &laquo;команд&raquo;. Вот, собственно, сама заметка &laquo;<a href="http://debugger.ru/blog/gorjachie_slova">Горячие слова</a>&raquo;</p>
<p>&laquo;Трактористы&raquo; могут придумать массу примеров, где этот скрипт можно использовать. Например, &laquo;скрытые&raquo; функции на сайте, запускаемые вводом &laquo;секретных команд&raquo;, или &laquo;быстрый&raquo; переход по объектам административного интерфейса.</p>
<p>Предлагаю в комментариях высказать свое мнение о таком функционале и предложения по использованию.</p>

	Tags: <a href="http://lobach.info/tag/%d1%81%d0%be%d0%b2%d0%b5%d1%82%d1%8b/" title="советы" rel="tag">советы</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://lobach.info/develop/zf/tips-zf18/" title="Хитрости ZF1.8 (04.05.2009)">Хитрости ZF1.8</a> (1)</li>
	<li><a href="http://lobach.info/develop/svn/svn-commit-tutorial/" title="Советы по фиксациям в SVN (16.04.2009)">Советы по фиксациям в SVN</a> (0)</li>
	<li><a href="http://lobach.info/develop/zf/custom-zend_application-resources/" title="Пользовательские ресурсы для Zend_Application (13.01.2010)">Пользовательские ресурсы для Zend_Application</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/javascript/hot-words/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
