<?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>JSToolbox - все о JavaScript &#187; DOM</title>
	<atom:link href="http://www.jstoolbox.com/category/dom/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jstoolbox.com</link>
	<description>Блог о программировании вообще и о JavaScript в частности, уроки, статьи, заметки, база знаний.</description>
	<lastBuildDate>Wed, 28 Jul 2010 22:33:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Динамическое назначение обработчиков событий в jQuery 1.3</title>
		<link>http://www.jstoolbox.com/2009/02/13/dinamicheskoe-naznachenie-obrabotchikov-sobytij-v-jquery-13/</link>
		<comments>http://www.jstoolbox.com/2009/02/13/dinamicheskoe-naznachenie-obrabotchikov-sobytij-v-jquery-13/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 23:33:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[События]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/?p=408</guid>
		<description><![CDATA[<p>В новой версии jQuery - 1.3 появилась новая, полезная функия - <strong>live()</strong>. Это аналог функции <strong>bind()</strong>, но с одной интересной особенностью. Функия способна назначать обработчики событий динамически при создании новых элементов DOM. Такая необходимость часто возникает при использовании AJAX. К примеру, выполняем запрос на сервер, а результат, получаемый в HTML добавляем на страницу. Если добавленным элементам нужно назначить обработчик событий, то приходится писать код, который делает это непосредственно после добавления.</p>]]></description>
			<content:encoded><![CDATA[<p>В новой версии jQuery &#8211; 1.3 появилась новая, полезная функия &#8211; <strong>live()</strong>. Это аналог функции <strong>bind()</strong>, но с одной интересной особенностью. Функия способна назначать обработчики событий динамически при создании новых элементов DOM. Такая необходимость часто возникает при использовании AJAX. К примеру, выполняем запрос на сервер, а результат, получаемый в HTML добавляем на страницу. Если добавленным элементам нужно назначить обработчик событий, то приходится писать код, который делает это непосредственно после добавления.</p>
<p><span id="more-408"></span></p>
<p>Рассмотрим пример. Предположим, у нас имеется ненумерованный список, для каждого из элементов которого должен быть установлен обработчик. Плюс имеется кнопка, которая создает новые элементы списка. Список выглядит следующим образом:</p>
<pre class="prettyprint">
	&lt;ul>
		&lt;li>Один&lt;/li>
		&lt;li>Два&lt;/li>
	&lt;/ul>

	&lt;button id="add">Добавить&lt;/div>
</pre>
<p>Код, который назначает обработчики:</p>
<pre class="prettyprint">
$(function(){
	$('li').click(function(){
		alert($(this).html());
	});

	$('#add').click(function(){
		$('ul').append('&lt;li>Новый элемент '+Math.ceil(Math.random()*1000)+'&lt;/li>');
	});
})
</pre>
<p>В итоге, при щелчке на элементах, которые были в списке с самого начала, будет показан <em>alert</em> с текстом элемента списка. Но новые элементы на щелчок реагировать не будут, так как созданы они уже после назначения обработчиков <a href="/demo/jqlive/before.php">(Смотреть пример)</a>.</p>
<p>Исправляем это следующим образом:</p>
<pre class="prettyprint">
$(function(){
	$('li').click(function(){
		alert($(this).html());
	});

	$('#add').click(function(){
		$('ul').append('&lt;li>Новый элемент '+Math.ceil(Math.random()*1000)+'&lt;/li>');

		$('ul li:last').click(function(){
			alert($(this).html());
		});
	});
})
</pre>
<p>Теперь каждый раз при создании нового элемента, ему будет назначаться обработчик. Одноко, при использовании новой функции <strong>live()</strong>, это можно сделать немного проще и компактнее:</p>
<pre class="prettyprint">
$(function(){
	$('li').live('click', function(){
		alert($(this).html());
	});

	$('#add').click(function(){
		$('ul').append('&lt;li>Новый элемент '+Math.ceil(Math.random()*1000)+'&lt;/li>');
	});
})
</pre>
<p>Результат работы такого кода точно такой же, как в предыдущем варианте, но код получился гораздо понятнее и короче <a href="/demo/jqlive/after.php">(Смотреть пример)</a>. Применив для назначения обработчика <strong>live()</strong>, я тем самым указал, что он должен быть назначен всем элементам <em>&lt;li&gt;</em> как статическим, так и созданным динамически.</p>
<p>Однако при использовании этой функции стоит учитывать её ограничения:</p>
<ul>
<li>пока ещё не все события поддерживаются</li>
<li>применяться она может только по отношению к селекторам, её нельзя использовать с элементами</li>
</ul>
<p>Помимо <strong>live()</strong>, существует и противоположная по назначению функция &#8211; <strong>die()</strong>. Она предназначена для удаления обработчика, назначенного функцией <strong>live()</strong>.</p>
<p>Более подробную информацию можно найти <a href="http://docs.jquery.com/Events/live#typefn" title="jQuery документация - фукнция live">здесь</a>.</p>
<div class="postLinks"><strong>Спонсор статьи:</strong>Продвижение сайтов, поисковая оптимизация, <a href="http://inweb.od.ua/services/seo/">раскрутка сайта одесса</a><br/><a href="http://toptea.ru/">Продажа чая</a><br/>Интернет-магазин мягких игрушек, <a href="http://darling-toy.ru/pages.php?page=Aurora">мягкие игрушки большие</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2009/02/13/dinamicheskoe-naznachenie-obrabotchikov-sobytij-v-jquery-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peppy &#8211; выборка элементов DOM по CSS3 селекторам</title>
		<link>http://www.jstoolbox.com/2008/11/02/peppy-css3/</link>
		<comments>http://www.jstoolbox.com/2008/11/02/peppy-css3/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 21:02:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/11/02/peppy-css3/</guid>
		<description><![CDATA[James Donaghue создал библиотеку Peppy для выборки элементов DOM, использую селекторы CSS3. Главные достоинства библиотеки это скорость и размер. При размере всего 10Кб, Peppy работает гораздо быстрее, чем соответствующие библиотеки всех основных фреймворков.



В доказательство своих слов, Джеймс приводит результаты сравнительных тестов, которые сравнивают скорость работы селекторов фреймворков Mootools, jQuery, YUI, Dojo, Prototype, Ext и Sizzle. [...]]]></description>
			<content:encoded><![CDATA[<p>James Donaghue <a href="http://jamesdonaghue.com/?p=40">создал библиотеку Peppy</a> для выборки элементов DOM, использую селекторы CSS3. Главные достоинства библиотеки это скорость и размер. При размере всего 10Кб, Peppy работает гораздо быстрее, чем соответствующие библиотеки всех основных фреймворков.</p>
<div class="entry_picture" style="width:429px">
<img src='http://www.jstoolbox.com/wp-content/uploads/2008/11/p.png' alt='Peppy - библиотека-селектор CSS3' />
</div>
<p>В доказательство своих слов, Джеймс приводит результаты сравнительных тестов, которые сравнивают скорость работы селекторов фреймворков Mootools, jQuery, YUI, Dojo, Prototype, Ext и Sizzle. Их можно посмотреть <a href="http://jamesdonaghue.com/static/peppy/profile/slickspeed/">здесь</a>.</p>
<p>Синтаксис селекторов ничем не отличается от синтаксиса jQuery (в том смысле, что и там и там используется знак доллара <strong>$</strong>):</p>
<pre class="prettyprint">
var elems = $('dt');
</pre>
<p>Так что, если вы используете фреймворки только из-за удобных селекторов, то думаю Peppy будет им прекрасной заменой. Скачать скрипт можно <a href="http://jamesdonaghue.com/static/peppy/">на этой странице</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/11/02/peppy-css3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Выборка элементов по CSS селектору</title>
		<link>http://www.jstoolbox.com/2008/08/01/vyborka-elementov-po-css-selektoru/</link>
		<comments>http://www.jstoolbox.com/2008/08/01/vyborka-elementov-po-css-selektoru/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 19:21:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/08/01/vyborka-elementov-po-css-selektoru/</guid>
		<description><![CDATA[Я думаю большинство из нас привыкли к более продвинутому методу получения элементов DOM, чем простые document.getElementById() или document.getElementsByTagName(). В большинстве современных JavaScript фреймворков используются функции позволяющие получать коллекцию элементов по CSS селектору:

var elems = $('.list li a');

Такой метод более простой и удобный, однако и более медленный. К тому же функции, выполняющие такую выборку, довольно таки [...]]]></description>
			<content:encoded><![CDATA[<p>Я думаю большинство из нас привыкли к более продвинутому методу получения элементов DOM, чем простые <strong>document.getElementById()</strong> или <strong>document.getElementsByTagName()</strong>. В большинстве современных JavaScript фреймворков используются функции позволяющие получать коллекцию элементов по CSS селектору:</p>
<pre class="prettyprint">
var elems = $('.list li a');
</pre>
<p>Такой метод более простой и удобный, однако и более медленный. К тому же функции, выполняющие такую выборку, довольно таки громоздкие и их использование значительно увеличивает размер скриптов.</p>
<p>Однако, ничто не стоит на месте, и все меняется с приходом новых стандартов и новых браузеров. Так, в новом стандарте <a href="http://dev.w3.org/2006/webapi/selectors-api/" title="Selectors API">Selectors API</a> имеются функции <strong>document.querySelector()</strong> и <strong>document.querySelectorAll()</strong>, способные делать выборку элементов по CSS. Реализация этих функций на уровне браузера даст возможность избавиться от необходимости добавлять вышеупомянутые скрипты во фреймворки, значительно увеличит производительность и ёмкость скриптов.</p>
<p>До сих пор обе эти функции были реализованы в <a href="http://webkit.org/blog/156/queryselector-and-queryselectorall/" title="querySelector and querySelectorAll">Webkit</a> и <a href="http://msdn.microsoft.com/en-us/library/cc304114(VS.85).aspx">Internet Explorer 8 beta</a>, но буквально на днях вышла новая версия <a href="">Firefox 3.1 alpha</a>, где одним из новшеств являются CSS селекторы.</p>
<p>Типичное применение:</p>
<pre class="prettyprint">
var elem = document.querySelector('#myelem');
var elems = document.querySelectorAll('ul > li:not(".selected"):hover');
</pre>
<p>Дабы придать функциям более привычный вид, можно использовать следующий прием (об этом писал <a href="http://www.dustindiaz.com/firefox-31-brings-good-stuff/">Dustin Diaz</a>):</p>
<pre class="prettyprint">
var $$ = function(q, b) {
  if (b) {
    return document.querySelector(q);
  } else {
    return document.querySelectorAll(q);
  }
};
</pre>
<p>Если в качестве второго параметра передаем <strong>true</strong>, то используется <strong>querySelector</strong>, возвращающий единственный элемент, если этот параметр не указан, то тогда используется <strong>querySelectorAll</strong>, который в свою очередь возвращает коллекцию элементов <strong>nodeList</strong>. Чтобы преобразовать полученный nodeList в массив, можно использовать функцию <strong>slice()</strong>:</p>
<pre class="prettyprint">
var nodes = [].slice.call($$('ul > li:not(".selected"):hover'), 0);
</pre>
<p>Последним из наиболее популярных браузеров, где пока не реализованы эти функции, это Opera, но и там не все так плохо, ибо работы над этим уже <a href="http://my.opera.com/core/blog/selectors-api">ведутся</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/08/01/vyborka-elementov-po-css-selektoru/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery.batch плагин</title>
		<link>http://www.jstoolbox.com/2008/05/11/jquerybatch-plagin/</link>
		<comments>http://www.jstoolbox.com/2008/05/11/jquerybatch-plagin/#comments</comments>
		<pubDate>Sun, 11 May 2008 21:15:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[плагин]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/05/11/jquerybatch-plagin/</guid>
		<description><![CDATA[По большему счету функции jQuery работают над коллекцией элементов, получаемых при помощи метода $(). Исключением из этого правила являются функции &#8220;геттеры&#8221; (getters &#8211; трудно сказать как правильно перевести этот термин), которые возвращают результат только для первого элемента коллекции. Таковыми являются функции attr(), width(), html() и другие. Но иногда возникает необходимость получить некоторые значения для всех [...]]]></description>
			<content:encoded><![CDATA[<p>По большему счету функции jQuery работают над коллекцией элементов, получаемых при помощи метода <strong>$()</strong>. Исключением из этого правила являются функции &#8220;геттеры&#8221; (getters &#8211; трудно сказать как правильно перевести этот термин), которые возвращают результат только для первого элемента коллекции. Таковыми являются функции <strong>attr()</strong>, <strong>width()</strong>, <strong>html()</strong> и другие. Но иногда возникает необходимость получить некоторые значения для всех элементов коллекции. Именно с этой целью <a href="http://blog.brandonaaron.net/">Аарон Брэндон</a> создал плагин <a href="http://plugins.jquery.com/project/batch">jQuery.batch</a>, который расширяет функциональность jQuery добавляя новые методы, которые отличаются от аналогов лишь множественным числом в названии. Так, для функции <strong>attr()</strong> объявляется функция <strong>attrs()</strong>. Новые методы обрабатывают всю полученную коллекцию, возвращая массив результатов.</p>
<p>Полный список методов, добавляемых jQuery.batch:</p>
<ul>
<li>attrs</li>
<li>styles</li>
<li>widths</li>
<li>heights</li>
<li>vals</li>
<li>texts</li>
<li>htmls</li>
</ul>
<p>Дополнительно к основным методам, jQuery.batch добавляет свой собственный метод &#8211; <strong>jQuery.fn.batch()</strong>, который принимает имя существующей функции из коллекции <strong>jQuery.fn</strong> вместе с дополнительными параметрами:</p>
<pre class="prettyprint">
$('a').batch('attr', 'href');
</pre>
<p>Этот же результат можно получить при помощи следующего выражения:</p>
<pre class="prettyprint">
$('a').attrs('href');
</pre>
<p><br/></p>
<p>Домашняя страница плагина расположена по следующей ссылке: <a href="http://plugins.jquery.com/project/batch" class="external">jQuery.batch</a></p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/05/11/jquerybatch-plagin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools для начинающих &#8211; работа с элементами и событиями</title>
		<link>http://www.jstoolbox.com/2008/04/18/mootools-dlya-nachinayushhix-rabota-s-elementami-i-sobytiyami/</link>
		<comments>http://www.jstoolbox.com/2008/04/18/mootools-dlya-nachinayushhix-rabota-s-elementami-i-sobytiyami/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 23:11:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[MooTools]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/04/18/mootools-dlya-nachinayushhix-rabota-s-elementami-i-sobytiyami/</guid>
		<description><![CDATA[Этот туториал предназначен для тех, кто делает первые шаги в изучении библиотеки Mootools. Здесь я рассмотрю две основные задачи, без которых практически не обходится ни один скрипт &#8211; это получение ссылок на элементы документа и добавление обработчиков событий к ним.

Получение ссылок на элементы
Для того, чтобы каким либо образом работать с элементами на странице, нужно получить [...]]]></description>
			<content:encoded><![CDATA[<p>Этот туториал предназначен для тех, кто делает первые шаги в изучении библиотеки <a href="http://mootools.net">Mootools</a>. Здесь я рассмотрю две основные задачи, без которых практически не обходится ни один скрипт &#8211; это получение ссылок на элементы документа и добавление обработчиков событий к ним.</p>
<p><span id="more-103"></span></p>
<h4>Получение ссылок на элементы</h4>
<p>Для того, чтобы каким либо образом работать с элементами на странице, нужно получить на них ссылку. Для этого в Mootools существуют две основные функции &#8211; <strong>$()</strong> и <strong>$$()</strong>, при помощи которых можно получать элементы по id, классу, тегу или css селектору. Функция <strong>$()</strong> является аналогом стандартной <strong>document.getElementById()</strong> и предназначена для получения элементов по их ID. При помощи второй функции &#8211; <strong>$$()</strong> можно получить ссылки на несколько объектов сразу, передав ей в качестве аргумента один или несколько CSS селекторов. Следующий пример показывает получение ссылок на все элементы с классом <strong>someClass</strong> и все изображения (тег <strong>&lt;img&gt;</strong>), а также получение элемента по ID:</p>
<pre class="prettyprint">
// получение элемента по ID
var elem = $('myElement');

// получение элементов по классу
var elems = $$('.someClass');

// получение элементов по тегу
var elems = $$('img');
</pre>
<p>Функция <strong>$$()</strong> всегда возвращает массив элементов, следовательно к элементам этого массива можно обращаться при помощи индекса, например так: <strong>$$(&#8217;li&#8217;)[2]</strong>. В следующем примере, мы задаем для этой функции сразу три селектора. В результате функция вернет все ссылки, элемент с id=&#8221;menu&#8221; и элементы списка с классом &#8220;alt&#8221;:</p>
<pre class="prettyprint">
var aElem = $$('a', '#menu', 'li.alt');
</pre>
<p>Обе вышеперечисленные функции производят поиск по всему документу. Однако, если нам нужно выбрать некоторые элементы внутри другого элемента, то нужно воспользоваться функциями <strong>$E()</strong> или <strong>$ES()</strong>, которые могут принимать второй аргумент &#8211; фильтр. Разница между ними лишь в том, что <strong>$E()</strong> возвращает один элемент, а <strong>$ES()</strong> &#8211; все, соответствующие селектору внутри указанного элемента:</p>
<pre class="prettyprint">
// возвращает первую ссылку внутри элемента DOM с id = 'myElement'
$E('a', 'myElement');

// получение всех ссылок внутри $('myElement')
$ES('a','myElement');
</pre>
<p><br/></p>
<h4>Создание и добавление элементов в DOM.</h4>
<p>Новые элементы создаются при помощи класса <strong>Element</strong>:</p>
<pre class="prettyprint">
var myImg = new Element ( 'img' , { 'src' : 'aa.jpg', 'alt': 'Мое фото' }) ;
</pre>
<p>Первый аргумент это имя тега, а второй это список аргументов в виде объекта. В этом примере мы создали новый элемент <strong>&lt;img&gt;</strong>, с двумя атрибутами &#8211; <strong>src</strong> и <strong>alt</strong>. Помимо прочего, во второй аргумент можно передавать специальные атрибуты <strong>styles</strong> и <strong>events</strong>, для установки стилей и обработчиков событий для создаваемого элемента:</p>
<pre class="prettyprint">
new Element('a', {
	'styles': {
		'display': 'block',
		'border': '1px solid black'
	},
	'events': {
		'click': function(){
			//aaa
		},
		'mousedown': function(){
			//aaa
		}
	},
	'class': 'myClassSuperClass',
	'href': 'http://mad4milk.net'
});
</pre>
<p>Теперь, чтобы добавить созданный элемент в документ, можно воспользоваться одной из следующих функций:</p>
<ul>
<li><strong>injectBefore(element);</strong> &#8211; вставляет новый элемент перед элементом <strong>element</strong>.</li>
<li><strong>injectAfter(element);</strong> &#8211; вставляет новый элемент после элемента <strong>element</strong>.</li>
<li><strong>injectInside(element);</strong> &#8211; добавляет новый элемент в элемент <strong>element</strong>. Новый элемент будет последним в списке дочерних (эта функция аналог стандартной <strong>appendChild</strong>).</li>
<li><strong>injectTop(element);</strong> &#8211; добавляет новый элемент в элемент <strong>element</strong>. Новый элемент будет первым в списке дочерних.</li>
</ul>
<p>В качестве примера, покажу создание элемента и добавление в документ с использованием <strong>injectBefore()</strong>, остальные функции работают похожим образом:
</p>
<pre class="prettyprint">
// создаем элемент
var myImg = new Element ( 'img' , { 'src' : 'aa.jpg', 'alt': 'Мое фото' }) ;

// добавляем его в документ перед элементом с id="main"
myImg.injectBefore($('main'));
</pre>
<p>В этом примере сначала создается изображение с двумя атрибутами &#8211; <strong>src</strong> и <strong>alt</strong>, а затем оно добавляется перед элементом с id=&#8221;main&#8221;.</p>
<h4>Добавление обработчиков событий</h4>
<p>В Mootools, обработчики событий, или вернее сказать &#8220;слушатели&#8221; (listeners), добавляются к элементам при помощи функции <strong>addEvent()</strong>, которая имеет следующий синтаксис:</p>
<pre class="prettyprint">
element.addEvent(event, function);
</pre>
<p>Здесь <strong>element</strong> &#8211; элемент DOM, к которому нужно добавить обработчик, <strong>event</strong> &#8211; тип события без приставки &#8216;on&#8217; (&#8217;click&#8217;, &#8216;load&#8217;), <strong>function</strong> &#8211; функция или указатель на функцию, которая должна выполняться при возникновении события. Пример:</p>
<pre class="prettyprint">
$('myElement').addEvent('click', function() {alert('test');} );

// fTest - указатель на функцию
$('myElement').addEvent('click', fTest);

function fTest () {
	alert('test');
}
</pre>
<p>Поскольку <strong>addEvent</strong> использует слушатели событий, то к элементам можно добавлять одновременно несколько функций обработчиков. Особое внимание стоит уделить событию <strong>onload</strong>. Оно возникает при полной загрузке страницы, включая все изображения и флэшки. Это значит, что прежде, чем функция обработчик выполнится, пользователю прийдется ждать пока загрузится все изображения, хотя структура DOM уже полностью готова к работе, и если на сайте большое количество различной графики, то ожидание может затянуться надолго. Для исправления этой ситуации, в <strong>Mootools</strong> существует событие <strong>domready</strong>, которое вызывается сразу же после загрузки структуры документа:</p>
<pre class="prettyprint">
window.addEvent('domready', function(){ ... });
</pre>
<p><br/><br/></p>
<h4>Пример</h4>
<p>В качестве примера создадим простой HTML документ с меню, выполненным в виде маркированного списка. Затем, получив ссылки на элементы меню, добавим к ним простой обработчик. Структура меню выглядит следующим образом:</p>
<pre class="prettyprint">
&lt;div id="accordion">
	&lt;h3 class="toggler menusection">Меню&lt;/h3>
	&lt;div class="element menusection">
		&lt;ul>
			&lt;li>Link 1&lt;/li>
			&lt;li>Link 2&lt;/li>
			&lt;li>Link 3&lt;/li>
			&lt;li>Link 4&lt;/li>
		&lt;/ul>
	&lt;/div>
&lt;/div>
</pre>
<p>Код JavaScript:</p>
<pre class="prettyprint">
window.addEvent('domready', function(){
	$ES('li','accordion').addEvent('click', newItem);
});

function newItem() {
	var el = new Element('li', {
			'events' : {'click' : newItem}
	});
	el.setHTML('Link');
	el.injectInside($E('ul','accordion'));
}
</pre>
<p>Вначале, мы добавляем обработчик к событию <strong>domready</strong> объекта <strong>window</strong>. Этот обработчик получает все элементы <strong>&lt;li&gt;</strong> внутри элемента с id=accordion и в свою очередь добавляет обработчик <strong>newItem</strong> к событию <strong>onclick</strong>. В результате, при щелчке на любом элементе маркированного списка, будет вызываться функция <strong>newItem()</strong>, которая создает новый элемент <strong>&lt;li&gt;</strong> и добавляет его в этот же список.</p>
<p><a href="/demo/mooIntro/index.html" class="demo">смотреть демо</a><a style="margin-left:18px" href="/download/mooIntro.zip" class="download">скачать</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/04/18/mootools-dlya-nachinayushhix-rabota-s-elementami-i-sobytiyami/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
