Мар
06
Как “подружить” Prototype и jQuery в одном проекте
1 балл2 балла3 балла4 балла5 баллов (6 голоса, средний балл: 4 из 5)
Loading ... Loading ...

jQuery и Prototype вместеДавно не писал ничего на тему программирования и вообще о вебе (все-таки блог не только о фрилансе).

Так вот недавно в одном из моих проектов возникла надобность использовать одно из готовых решений - плагин контекстного меню (того, что выпадает по клику правой клавишей мышки) в jQuery.

К сожалению (или к счастью) весь проект был построен на Prototype, а выдумывать велосипед заново желания не было (тоесть писать на Prototype то, что уже есть готовым в jQuery), поэтому я начал гуглить по поводу того, как “скрестить бобра и носорога”.

В итоге решение было найдено (сейчас даже уже не помню где именно, важен сам факт) в одном из англоязычных блогов (жаль ссылка утеряна во времени…) и состояло оно в том, чтобы включить jQuery в режим “безконфликтности” (да, да,  разработчики побеспокоились о том, чтобы другие библиотеки могли спокойно работать совместно с их детищем):

<script type="text/javascript"> $j = jQuery.noConflict();</script>

И далее везде для Prototype применяется и дальше знак $, а для jQuery - $j. После этого мне достаточно было в файле плагина все $ заменить на $j, подключить jQuery к проекту - и все заработало как мне того и хотелось.

Возможно мой опыт будет кому-то полезен в их проектах.



Добавить в:news2.ru Google Delicious Забобрить эту страницу! Добавить на Newsland.ru Добавить на СМИ2 Добавить на RUmarkz Добавить на Ваау! Добавить на rucity.com Добавить в закладки МоёМесто.ru Добавить на Habr Добавить на Moi Novosti Добавить страницу к Mister Wong Добавить на Moikrug Добавить на Myscoop Добавить на 100zakladok

Похожие заметки

Комментарии (9) на “Как “подружить” Prototype и jQuery в одном проекте”

  1. DeveloperGuru.NET написал:

    Вообще-то код плагинов имеет вид:

    (function($){
    // ... собственно реализация
    })(jQuery);

    И для плагина объект jQuery всегда будет доступен по $, поэтому в файле плагина ничего менять не надо было.

  2. anycolor написал:

    DeveloperGuru.NET, посмотрите:

    http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.js - код этого плагина содержал в конце еще и

    $(function() {
    $(’div.contextMenu’).hide();
    });

    Поэтому совместно не работало, пришлось переименовывать. А так, как с jQuery я не сильно знаком, поэтому решил просто сразу все вхождения $ заменить.

    Возможно Вы и правы и этого делать не нужно было везде, я не проверял.

    Но суть ведь не в том, как подключить какой-то плагин, а в том, чтобы две библиотеки смогли работать одновременно и можно было писать код и для jQuery и для Prototype и использовать сильные стороны обеих библиотек.

  3. DeveloperGuru.NET написал:

    Вот в

    $(function() {
    $(’div.contextMenu’).hide();
    });

    надо было заменить (это уже не плагин), а в самом плагине можно было не менять.

    Я вообще понимаю, что это надо было сделать срочно и времени на разбирательства небыло и сам бы сделал так же, если бы не знал.
    Просто даю информацию на будущее, т.к. сам недавно с этими вещами разбирался.

  4. anycolor написал:

    DeveloperGuru.NET, естественно. В синтаксис библиотеки не было желания вникать, к тому же я всегда использую Prototype :)

    Насчет информации - большое спасибо :)

  5. DenTal написал:

    да, да, разработчики побеспокоились о том, чтобы другие библиотеки могли спокойно работать совместно с ихним детищем

    Слух режет.

  6. Артем написал:

    По-моему функция noConflict() довольно подробно в документации самого jQuery описана. Кстати, кто знает преимущества Prototype перед jQuery и наоборот. Я например уже года два JQuery использую (практически с нулевой версии), и на мой взгляд больше библиотек и не надо никаких.

  7. anycolor написал:

    Артем, она-то описана, только что делать тем, что c jQuery не знаком или знаком поверхностно?

    А насчет jQuery vs Prototype - это холивар, которого можно найти много в интернете, каждый использует то, что ему больше нравится.

  8. anycolor написал:

    DenTal, спасибо, исправлено.

  9. Лена написал:

    Спасибо большое!
    Очень просто было сделать, как Вы написали)))
    Супер!!! Все работает!!!

Оставить комментарий

Внимание!

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Quicktags:-->