Конфликты между jQuery и Prototype
Я создаю приложение rails и устанавливаю этот гем под названием "best-in-place" для одноразового редактирования. Некоторое время он работал, но после того, как я боролся с конфликтами jQuery и Prototype, он перестал работать, и теперь я получаю это сообщение об ошибке при попытке загрузить страницу.
http://dl.getdropbox.com/u/3481269/Screen%20shot%202011-04-30%20at%206.17.45%20PM.png
Я включаю как JQuery, так и JS-файлы прототипов.
<script src="/javascripts/jquery.js?1303396383" type="text/javascript"></script>
<script src="/javascripts/rails.js?1303562965" type="text/javascript"></script>
<script src="/javascripts/application.js?1303842064" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$j = jQuery.noConflict();
</script>
<script src="/javascripts/prototype.js?1303686720" type="text/javascript"></script>
<script src="/javascripts/jquery.purr.js?1302145859" type="text/javascript"></script>
<script src="/javascripts/best_in_place.js?1302150372" type="text/javascript"></script>
Можете ли вы помочь мне решить проблему, что может быть причиной этой ошибки?
2 ответа
Вы назначаете JQuery .noConflict()
метод для $j
так что для JQuery вещи вы должны теперь использовать $j
не $
так например $j(document).ready(...
Я предполагаю, что лучший плагин на месте для jQuery, так что прости все остальное, если я ошибаюсь. Если вы не написали тонну JS, которая зависит от Prototype, в вашем приложении, я бы, вероятно, отказался от нее в пользу jQuery. Это довольно легко сделать переключатель.
Даже при том, что возможно использовать оба с надлежащим пространством имен, это не стоит. Между ними существует огромное количество совпадений, и вы добавляете в свой код дополнительный вес. Одного фреймворка JavaScript должно хватить на одну страницу!:)