<?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>Разработка &#187; jQuery</title>
	<atom:link href="http://www.job-blog.bullgare.ru/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.job-blog.bullgare.ru</link>
	<description>о программировании и работе</description>
	<lastBuildDate>Fri, 03 Feb 2012 09:42:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Как бороться с повторным добавлением обработчика события в jQuery</title>
		<link>http://www.job-blog.bullgare.ru/2011/10/%d0%ba%d0%b0%d0%ba-%d0%b1%d0%be%d1%80%d0%be%d1%82%d1%8c%d1%81%d1%8f-%d1%81-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%bd%d1%8b%d0%bc-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5%d0%bc/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/10/%d0%ba%d0%b0%d0%ba-%d0%b1%d0%be%d1%80%d0%be%d1%82%d1%8c%d1%81%d1%8f-%d1%81-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%bd%d1%8b%d0%bc-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5%d0%bc/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 11:06:56 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery-ui]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1250</guid>
		<description><![CDATA[Нужно было навешивать и снимать обработчик клика динамически, при этом не затронув чужие обработчики, а их на элементе несколько, каждый ставится своим виджетом. Мой jQuery-ui-виджет навешивает клик только если его ещё нет. Для этого сделан отдельный метод: _bindClick: function() { var me = this; var $me = $( me.element ); // боремся с повторным навешиванием [...]]]></description>
			<content:encoded><![CDATA[<p>Нужно было навешивать и снимать обработчик клика динамически, при этом не затронув чужие обработчики, а их на элементе несколько, каждый ставится своим виджетом.<br />
Мой jQuery-ui-виджет навешивает клик только если его ещё нет. Для этого сделан отдельный метод:</p>
<pre class="code">
_bindClick: function()
{
	var me = this;
	var $me = $( me.element );

// боремся с повторным навешиванием обработчика
	var events = $.data( $me.get(0), 'events' );
	var filteredEvents = [];
	if ( 'click' in events )
	{
		filteredEvents = $.grep( events.click, function( Event ) {
			return Event.type == 'click' &#038;&#038; Event.namespace == me.widgetName;
		} );
	}
	if ( filteredEvents.length ) {
		return;
	}

	$me.bind( 'click.' + me.widgetName, function( Event ) {
	// логика клика, к примеру:
		if ( ! me.options.allowDoubleClick ) {
			$me.unbind( 'click.' + me.widgetName );
		}
	} );
},
//===========================================================================}}}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/10/%d0%ba%d0%b0%d0%ba-%d0%b1%d0%be%d1%80%d0%be%d1%82%d1%8c%d1%81%d1%8f-%d1%81-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%bd%d1%8b%d0%bc-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5%d0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с событиями в jQuery 1.7</title>
		<link>http://www.job-blog.bullgare.ru/2011/10/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-1-7/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/10/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-1-7/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 08:51:53 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[события]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1237</guid>
		<description><![CDATA[В jQuery 1.7 добавили .on() и .off() для единообразия работы с событиями. bind, live и delegate могли вести себя непредсказуемо при использовании вместе. Например, $(document).unbind(&#8216;click&#8217;) убирал все live(&#8216;click&#8217;)-события со всего документа. Новое API событий .on() and .off() призвано как-то унифицировать систему создания обработчиков событий: Старое API Новое API $(elems).bind(events, fn) $(elems).on(events, fn) $(elems).bind(events, { mydata: 42 }, [...]]]></description>
			<content:encoded><![CDATA[<h3>В jQuery 1.7 добавили .on() и .off() для единообразия работы с событиями.</h3>
<p>bind, live и delegate могли вести себя непредсказуемо при использовании вместе. Например, <strong>$(document).unbind(&#8216;click&#8217;)</strong> убирал все <strong>live(&#8216;click&#8217;)</strong>-события со всего документа.<br />
Новое API событий <strong>.on()</strong> and <strong>.off()</strong> призвано как-то унифицировать систему создания обработчиков событий:</p>
<table cellspacing="10" style="border: solid 1px black">
<tbody>
<tr>
<td>Старое API</td>
<td>Новое API</td>
</tr>
<tr>
<td>$(elems).bind(events, fn)</td>
<td>$(elems).on(events, fn)</td>
</tr>
<tr>
<td>$(elems).bind(events, { mydata: 42 }, fn)</td>
<td>$(elems).on(events, { mydata: 42 }, fn)</td>
</tr>
<tr>
<td>$(elems).unbind(events, fn)</td>
<td>$(elems).off(events, fn)</td>
</tr>
<tr>
<td>$(elems).delegate(events, selector, fn)</td>
<td>$(elems).on(events, selector, fn)</td>
</tr>
<tr>
<td>$(elems).undelegate(events, selector, fn)</td>
<td>$(elems).off(events, selector, fn)</td>
</tr>
<tr>
<td>$(selector).live(events, fn)</td>
<td>$(document).on(events, selector, fn)</td>
</tr>
<tr>
<td>$(selector).die(events, fn)</td>
<td>$(document).off(events, selector, fn)</td>
</tr>
</tbody>
</table>
<p><em>Старое API пока убирать не будут.</em><br />
<a href="http://blog.jquery.com/2011/09/28/jquery-1-7-beta-1-released/">Ссылка на блог jQuery</a><br />
<a href="http://habrahabr.ru/blogs/jquery/129613/">Ссылка на хабр</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/10/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-1-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.deferred</title>
		<link>http://www.job-blog.bullgare.ru/2011/06/jquery-deferred/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/06/jquery-deferred/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 12:11:16 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[deferred]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[promise]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1159</guid>
		<description><![CDATA[В jQuery 1.5 была полностью переработана модель асинхронных запросов. Теперь они возвращают deferred-объект, содержащий promise-объект, который содержит методы, позволяющие узнать состояние запроса или навесить дополнительные обработчики. promise-Объект содержит методы then, done, fail, isResolved и isRejected. Суть нового подхода состоит в следующем: $.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){ // a1 и a2 - аргументы, отвечающие соответственно за запросы к [...]]]></description>
			<content:encoded><![CDATA[<p>В jQuery 1.5 была полностью переработана модель асинхронных запросов. Теперь они возвращают deferred-объект, содержащий <a href="http://api.jquery.com/deferred.promise/">promise-объект</a>, который содержит методы, позволяющие узнать состояние запроса или навесить дополнительные обработчики. promise-Объект содержит методы <strong><code>then</code></strong>, <strong><code>done</code></strong>, <strong><code>fail</code></strong>, <strong><code>isResolved</code></strong> и <strong><code>isRejected</code></strong>.<br />
Суть нового подхода состоит в следующем:</p>
<pre class="code">
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
	// a1 и a2 - аргументы, отвечающие соответственно за запросы к страницам page1 и page2
	var jqXHR = a1[2]; /* массив состоит из [ "success", statusText, jqXHR ] */
	if ( /Оппа!/.test(jqXHR.responseText) ) {
		alert("Где-то на первой странице есть 'Оппа!'.");
	}
});
</pre>
<p>$.when  принимает deferred-объект или объекты и возвращает promise-объект.<br />
Можно делать и так:</p>
<pre class="code">
var $promise;
if ( tt == 1 ) {
	$promise = $.when( $.getJSON( ... ) );
}
else if ( tt == 2 ) {
	$promise = $.when( $.getJSON( ... ), $.getJSON( ... ), $.post( ... ) );
}
else {
	$promise = $.when( console.log( 'else' ) );
}
$promise.
	then( function() { console.log( 'done', data ) } );
</pre>
<p>Пример немного корявый, но сделан был для того, чтобы показать, что необязательно работать с асинхронными запросами для использования $.when-$.then.<br />
Если $.when принимает в качестве аргумента не deferred-объект, то $.then выполнится сразу же.<br />
Если передано несколько ajax-аргументов, то будет ожидаться завершение всех, и только после этого сработает функция (собственно, это основная фишка).<br />
Можно создавать свои deferred-объекты:</p>
<pre class="code">
// запуск задач через 3 секунды
function test() {
	var d = $.Deferred();
	setTimeout( function() { d.resolve(); }, 3000 );
	return d.promise();
}

var t = test().done(function() { alert("время истекло"); });
</pre>
<p>Более подробно почитать можно:<br />
<a href="http://api.jquery.com/category/version/1.5/">на странице списка изменений jQuery 1.5</a> (почти все изменения и связаны с внедрением deferred),<br />
<a href="http://habrahabr.ru/blogs/jquery/113073/">jQuery Deferred Object (подробное описание)</a>,<br />
<a href="http://habrahabr.ru/blogs/jquery/112960/">Использование Deferred объектов в jQuery 1.5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/06/jquery-deferred/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.delegate</title>
		<link>http://www.job-blog.bullgare.ru/2011/06/jquery-delegate/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/06/jquery-delegate/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 10:50:21 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1156</guid>
		<description><![CDATA[jQuery.delegate и jQuery.undelegate появились в jQuery 1.4.2. Это аналоги .live и .die(). У .live и .die() есть проблемы с, к примеру, вложенными объектами, с встраиванием в цепочки и много ещё. Синтаксис .delegate отличается от .live и, соответственно, .click и т.п. Пример использования: // Using .live() $("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover"); }); }); // Using .die() [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery.delegate и jQuery.undelegate появились в jQuery 1.4.2. Это аналоги .live и .die().<br />
У .live и .die() есть проблемы с, к примеру, вложенными объектами, с встраиванием в цепочки и много ещё.<br />
Синтаксис .delegate отличается от .live и, соответственно, .click и т.п.<br />
Пример использования:</p>
<pre class="code">
// Using .live()
	$("table").each(function(){
		$("td", this).live("hover", function(){
			$(this).toggleClass("hover");
		});
	});
// Using .die()
	$("table").each(function(){
		$("td", this).die("hover");
	});

// Using .delegate()
	$("table").delegate("td", "hover", function(){
		$(this).toggleClass("hover");
		});
// Using .undelegate()
	$("table").undelegate("td", "hover");
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/06/jquery-delegate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с событиями в jQuery-ui</title>
		<link>http://www.job-blog.bullgare.ru/2011/06/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-ui/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/06/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-ui/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 10:21:55 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery-ui]]></category>
		<category><![CDATA[trigger]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1149</guid>
		<description><![CDATA[Если нужно из виджета стриггерить событие, это сделать это можно двумя способами: this.element.trigger( 'my_event_element', { option1: true } ); this._trigger( '_my_event_widget', null, { option1: true } ); Допустим, что наш виджет называется MyCoolWidget. Тогда поймать наши события можно так: $( '#div' ).MyCoolWidget(); $( '#div' ). bind( 'my_event_element', function( Event, Ui ) { console.dir( Ui ) [...]]]></description>
			<content:encoded><![CDATA[<p>Если нужно из виджета стриггерить событие, это сделать это можно двумя способами:</p>
<pre class="code">
this.element.trigger( 'my_event_element', { option1: true } );
</pre>
<pre class="code">
this._trigger( '_my_event_widget', null, { option1: true } );
</pre>
<p>Допустим, что наш виджет называется <strong>MyCoolWidget</strong>. Тогда поймать наши события можно так:</p>
<pre class="code">
$( '#div' ).MyCoolWidget();
$( '#div' ).
	bind( 'my_event_element', function( Event, Ui ) { console.dir( Ui ) } ).
	bind( 'mycoolwidget_my_event_widget', function( Event, Ui ) { console.dir( Ui ) } );
</pre>
<p>Обратите внимание на второй <strong>bind</strong> &#8211; префиксом к событию в этом случае явлется название виджета в нижнем регистре.</p>
<p>Кстати, есть ещё один способ обработать событие от <strong>this._trigger</strong> &#8211; передать в options параметр-функцию с названием, равным стригерённому событию:</p>
<pre class="code">
$( '#div' ).MyCoolWidget( { _my_event_widget: function( Event, Ui ) { console.dir( Ui ) } } );
</pre>
<p>Полезная ссылка &#8211; <a href="http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/">http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/06/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-jquery-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Способ узнать, какие события забиндены на элементе в jQuery</title>
		<link>http://www.job-blog.bullgare.ru/2011/06/%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%ba%d0%b0%d0%ba%d0%b8%d0%b5-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f-%d0%b7%d0%b0%d0%b1%d0%b8%d0%bd%d0%b4%d0%b5%d0%bd/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/06/%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%ba%d0%b0%d0%ba%d0%b8%d0%b5-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f-%d0%b7%d0%b0%d0%b1%d0%b8%d0%bd%d0%b4%d0%b5%d0%bd/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 11:40:47 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=1140</guid>
		<description><![CDATA[console.log( $( selector ).data('events') ); Выдаст все события, которые слушаются обработчиками на элементе.]]></description>
			<content:encoded><![CDATA[<pre class="code">
console.log( $( selector ).data('events') );
</pre>
<p>Выдаст все события, которые слушаются обработчиками на элементе.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/06/%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%ba%d0%b0%d0%ba%d0%b8%d0%b5-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f-%d0%b7%d0%b0%d0%b1%d0%b8%d0%bd%d0%b4%d0%b5%d0%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery templates (расширение jQuery, шаблонизатор)</title>
		<link>http://www.job-blog.bullgare.ru/2011/04/jquery-templates-%d1%80%d0%b0%d1%81%d1%88%d0%b8%d1%80%d0%b5%d0%bd%d0%b8%d0%b5-jquery-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd%d0%b8%d0%b7%d0%b0%d1%82%d0%be%d1%80/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/04/jquery-templates-%d1%80%d0%b0%d1%81%d1%88%d0%b8%d1%80%d0%b5%d0%bd%d0%b8%d0%b5-jquery-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd%d0%b8%d0%b7%d0%b0%d1%82%d0%be%d1%80/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 14:12:42 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=998</guid>
		<description><![CDATA[Всё достаточно просто. $.getJSON( me.options.urlMoreResults ) .success( function( Answer ) { $( '#my-tmpl' ).tmpl( Answer ); } ); Шаблон: &#60;script id="my-tmpl" type="text/x-jquery-tmpl"&#62; &#60;div&#62; {{if songs}} &#60;ul class="song-list"&#62; {{each songs}} &#60;li&#62; &#60;a class="play js-play" href="javascript:void(0);" data-song="${$value.id}"&#62;&#60;/a&#62; &#60;/li&#62; {{/each}} &#60;/ul&#62; {{/if}} {{if description}} &#60;div class="description"&#62; &#60;a href="${url}/about" target="_blank"&#62; ${description} &#60;/a&#62; &#60;/div&#62; {{/if}} &#60;/div&#62; &#60;/script&#62; http://api.jquery.com/category/plugins/templates/ http://habrahabr.ru/blogs/jquery/112843/ http://habrahabr.ru/blogs/jquery/113672/]]></description>
			<content:encoded><![CDATA[<p>Всё достаточно просто.</p>
<pre class="code">	$.getJSON( me.options.urlMoreResults )
		.success( function( Answer )
			{
				$( '#my-tmpl' ).tmpl( Answer );
			}
		);</pre>
<p>Шаблон:</p>
<pre class="code">
	&lt;script id="my-tmpl" type="text/x-jquery-tmpl"&gt;
			&lt;div&gt;
				{{if songs}}
					&lt;ul class="song-list"&gt;
						{{each songs}}
							&lt;li&gt;
								&lt;a class="play js-play" href="javascript:void(0);" data-song="${$value.id}"&gt;&lt;/a&gt;
							&lt;/li&gt;
						{{/each}}
					&lt;/ul&gt;
				{{/if}}

				{{if description}}
					&lt;div class="description"&gt;
						&lt;a href="${url}/about" target="_blank"&gt;
							${description}
						&lt;/a&gt;
					&lt;/div&gt;
				{{/if}}
			&lt;/div&gt;
	&lt;/script&gt;
</pre>
<p><a href="http://api.jquery.com/category/plugins/templates/">http://api.jquery.com/category/plugins/templates/</a><br />
<a href="http://habrahabr.ru/blogs/jquery/112843/">http://habrahabr.ru/blogs/jquery/112843/</a><br />
<a href="http://habrahabr.ru/blogs/jquery/113672/">http://habrahabr.ru/blogs/jquery/113672/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/04/jquery-templates-%d1%80%d0%b0%d1%81%d1%88%d0%b8%d1%80%d0%b5%d0%bd%d0%b8%d0%b5-jquery-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd%d0%b8%d0%b7%d0%b0%d1%82%d0%be%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery &#8211; обработка событий с использованием Namespaced Events</title>
		<link>http://www.job-blog.bullgare.ru/2011/01/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d0%b9-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-n/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/01/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d0%b9-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-n/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 13:02:22 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=903</guid>
		<description><![CDATA[Часто события навешиваются на элементы так: $('.class').bind('click', function(){}); А когда нужно снять обработчик события с элемента, то делается это так: $('.class').unbind('click'); При этом слетят все обработчики события click с элемента. Можно снимать только конкретный обработчик, но это не очень удобно. Гораздо удобнее группировать обработчики в неймспэйсы по функциональности, а потом снимать обработчики всего неймспэйса: $('.class').bind('click.namespace', [...]]]></description>
			<content:encoded><![CDATA[<p>Часто события навешиваются на элементы так:</p>
<pre class="code">
$('.class').bind('click', function(){});
</pre>
<p>А когда нужно снять обработчик события с элемента, то делается это так:</p>
<pre class="code">
$('.class').unbind('click');
</pre>
<p>При этом слетят все обработчики события <strong>click</strong> с элемента. Можно снимать только конкретный обработчик, но это не очень удобно.<br />
Гораздо удобнее группировать обработчики в неймспэйсы по функциональности, а потом снимать обработчики всего неймспэйса:</p>
<pre class="code">
$('.class').bind('click.namespace', function(){});
$('.class').bind('click.namespace', function(){});
$('.class').trigger('click.namespace');
$('.class').unbind('click.namespace');
</pre>
<p>При этом есть ещё один очень большой плюс: события разных неймспэйсов не вызывают обработчики друг друга, а <strong>click</strong> вызовет все обработчики</p>
<pre class="code">
$('.class').bind('click.namespace', function(){});
$('.class').trigger('click.namespace'); // Вызовет наш обработчик
$('.class').trigger('click');           // Тоже вызовет
$('.class').trigger('click.other');     // Не вызовет
</pre>
<p><a href="http://docs.jquery.com/Namespaced_Events">Ссылка на документацию</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/01/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d0%b9-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Передача параметров с сервера к jQuery. Продвинутый способ.</title>
		<link>http://www.job-blog.bullgare.ru/2011/01/%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%be%d0%b2-%d1%81-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%ba-jquery-%d0%bf%d1%80%d0%be%d0%b4/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/01/%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%be%d0%b2-%d1%81-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%ba-jquery-%d0%bf%d1%80%d0%be%d0%b4/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 12:48:15 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=897</guid>
		<description><![CDATA[Старый способ передачи параметров с сервер-сайда на клиент-сайд для jQuery обычно выглядел так: &#60;div class="my-class" property1="prop1-value" property2="prop2-value"&#62;текст&#60;/div&#62; Потом в скрипте можно было обращаться к свойствам DOM-элемента var property1Initial = $( ".my-class" ).attr( "property1" ); Есть более интересный способ, использующий jQuery data: &#60;div class="my-class" data-property1="prop1-value" data-property2="prop2-value"&#62;текст&#60;/div&#62; В скрипте можно обратиться к этим свойствам так: var property1Initial [...]]]></description>
			<content:encoded><![CDATA[<p>Старый способ передачи параметров с сервер-сайда на клиент-сайд для jQuery обычно выглядел так:</p>
<pre class="code">
&lt;div class="my-class" property1="prop1-value" property2="prop2-value"&gt;текст&lt;/div&gt;
</pre>
<p>Потом в скрипте можно было обращаться к свойствам DOM-элемента</p>
<pre class="code">
var property1Initial = $( ".my-class" ).attr( "property1" );
</pre>
<p>Есть более интересный способ, использующий jQuery data:</p>
<pre class="code">
&lt;div class="my-class" data-property1="prop1-value" data-property2="prop2-value"&gt;текст&lt;/div&gt;
</pre>
<p>В скрипте можно обратиться к этим свойствам так:</p>
<pre class="code">
var property1Initial = $( ".my-class" ).data().property1;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/01/%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%be%d0%b2-%d1%81-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%ba-jquery-%d0%bf%d1%80%d0%be%d0%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сброс очереди анимации на элементе в  jquery</title>
		<link>http://www.job-blog.bullgare.ru/2011/01/%d1%81%d0%b1%d1%80%d0%be%d1%81-%d0%be%d1%87%d0%b5%d1%80%d0%b5%d0%b4%d0%b8-%d0%b0%d0%bd%d0%b8%d0%bc%d0%b0%d1%86%d0%b8%d0%b8-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b5-%d0%b2-jquery/</link>
		<comments>http://www.job-blog.bullgare.ru/2011/01/%d1%81%d0%b1%d1%80%d0%be%d1%81-%d0%be%d1%87%d0%b5%d1%80%d0%b5%d0%b4%d0%b8-%d0%b0%d0%bd%d0%b8%d0%bc%d0%b0%d1%86%d0%b8%d0%b8-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b5-%d0%b2-jquery/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 13:05:47 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=895</guid>
		<description><![CDATA[Если нужно срочно прекратить анимацию (к примеру, как результат выполнения ajax-запроса), а она всё продолжается, то нужно сделать так: $el.queue("fx", []); Такое может быть, когда на элементе есть сложная анимация, связанная с отображением элемента, а по результату ajax-запроса элемент нужно скрыть. Подробно об очередях &#8211; на сайте jquery]]></description>
			<content:encoded><![CDATA[<p>Если нужно срочно прекратить анимацию (к примеру, как результат выполнения ajax-запроса), а она всё продолжается, то нужно сделать так:</p>
<pre class="code">
$el.queue("fx", []);
</pre>
<p>Такое может быть, когда на элементе есть сложная анимация, связанная с отображением элемента, а по результату ajax-запроса элемент нужно скрыть.<br />
Подробно об очередях &#8211; <a href="http://api.jquery.com/queue/#queue2">на сайте jquery</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2011/01/%d1%81%d0%b1%d1%80%d0%be%d1%81-%d0%be%d1%87%d0%b5%d1%80%d0%b5%d0%b4%d0%b8-%d0%b0%d0%bd%d0%b8%d0%bc%d0%b0%d1%86%d0%b8%d0%b8-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b5-%d0%b2-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

