<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
        <channel>
        <title>Русский клуб Joomla/Блог им. OttoFonBismark</title>
        <link>http://joomclub.net/profile/OttoFonBismark/created/topics/</link>
        <description><![CDATA[Это ваш персональный блог.]]></description>
        <language>ru</language>
        <managingEditor>byrkovskiy@yandex.ru</managingEditor>
        <webMaster>tena2000@mail.ru</webMaster>
        <generator>Alto CMS v.1.1.13</generator>
                    <item>
                <title>Mootools VS JQuery а почему не совместить?</title>
                <guid isPermaLink="true">http://joomclub.net/t/58/</guid>
                <link>http://joomclub.net/blog/58.html</link>
                <author>byrkovskiy@yandex.ru</author>
                <description><![CDATA[<p>Я думаю, все очень часто сталкивались с тем, что нужно было подключить сторонние  JSскрипты. И тут возникала проблема что подключенный скрипт не работает. </p>

<p>Конечно, одни советую отключать Mootools, но зачем же? Ведь много компонентов используют его, да и разработчики joomlaне зря его используют тоже.<span>  </span></p>

<p>Так тут один выход – совмещать эти библиотеки. Возникает вопрос как? Тут на помощь нам приходит 
</p>
<pre class="prettyprint"><code>&nbsp;jQuery.noConflict();</code></pre>
<p>Использовать его нужно при подключении Вашего стороннего скрипта</p>
<pre class="prettyprint"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;.js&quot;&gt;jQuery.noConflict();&lt;/script&gt;</code></pre>
<p>И еще обязательно использовать это перед тем где Вы подключаете</p>
<pre class="prettyprint"><code>&lt;jdoc:include type=&quot;head&quot; /&gt;</code></pre>
<p>Ведь именно здесь joomlaподключить все необходимые библиотеки для себя. </p>

<p>Также можно использовать следующие варианты:</p>

<p><span>1.<span>  </span></span>Для jQuery кода вместо $ использовать jQuery</p>
<pre class="prettyprint"><code>JQuery(&quot;divspan&quot;).hide();</code></pre>
<p><span>2.<span>  </span></span>Вместо jQuery использовать другое имя:</p>
 <a name="cut" rel="nofollow"></a> 
<pre class="prettyprint"><code>var k=jQuery.noConflict(); 
k(&quot;div span&quot;).hide();</code></pre>
<p>А теперь давайте копнем, почему же возникает этот конфликт?</p>

<p>При подключении <span>&lt;jdoc:include type=«head» /&gt;, мы подключили и </span>mootools. А там система зарезервировала $ за собой. Вот и возникает конфликт из-за пространства имен.</p>

<p><b><u>На последок, давайте поговорим про jQuery.noConflict().(очень красиво описано на <a href="http://jquery.page2page.ru)" rel="nofollow">http://jquery.page2page.ru)</a></u></b></p>

<p>Освобождает переменную <b>$</b>, чтобы избежать конфликтов имен. Метод имеет один вариант использования: </p>
<pre class="prettyprint"><code>jQuery.noConflict([removeAll]);</code></pre>
<p><b>removeAll</b> — необязательный параметр типа boolean, при значении true функция освободит все имена переменныых, занятые библиотекой jQuery. По умолчанию, равен false. </p>

<p>Многие другие javascript библиотеки, так же как и jQuery используют $ как имя переменной или функции. Однако, в случае jQuery, $ является синонимом (алиасом) идентификатора jQuery. Поэтому, при освобождении имени $ с помощью jQuery.noConflict() мы не теряем функциональности библиотеки jQuery, посколько можем использовать вместо него jQuery. </p>
<pre class="prettyprint"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;other_lib.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot;&gt; &nbsp; 
&nbsp; jQuery.noConflict(); 
&nbsp; // Далее может следовать код с использованием $ других библиотек. 
&lt;/script&gt;&lt;span&gt;&nbsp; &lt;/span&gt;</code></pre>
<p>  К сожалению, отключение идентификатора $ может привести к неправильной работе некоторых плагинов jQuery. Для этого случая существует следующий трюк: </p>
<pre class="prettyprint"><code>jQuery.noConflict(); 
(function($){ &nbsp; 
&nbsp; // здесь $ будет действовать как алиас jQuery 
})(jQuery); 
// здесь $ будет доступен для других библиотек</code></pre>
<p>То есть, мы можем вернуть алиас $ для jQuery локально — для кода, находящегося внутри функции, заданной указанным образом. Этот трюк можно использовать с методом <a href="http://jquery.page2page.ru/index.php5/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%B0_DOM" title="Обработчик готовности дерева DOM" rel="nofollow"><span>.ready()</span></a>: </p>
<pre class="prettyprint"><code>jQuery.noConflict(); 
jQuery(document).ready(function($) { &nbsp; 
&nbsp; // здесь $ будет действовать как алиас jQuery 
}); 
// здесь $ будет доступен для других библиотек</code></pre>
<p>Можно сделать вывод, если Вы подключаете сторонний скрипт, лучше всего использовать то, что было описано в самом начале. И не париться с заменой имен $ на JQuery или другое через переменную.</p>

<p>Но если Вы пишите свой скрипт, так конечно лучше сразу учесть возможность конфликта и с умом использовать имена и обращения к ним.</p>

<p>Удачи Вам! И помните –</p>

<p align="center">ВСЕ ГЕНИАЛЬНОЕ ПРОСТО НО НЕ ВСЕ ПРОСТОЕ ГЕНИАЛЬНО</p>]]></description>
                <pubDate>Sun, 07 Oct 2012 14:34:21 +0400</pubDate>
                            </item>
            </channel>
    </rss>
