Чтобы предотвратить $
конфликты между jQuery и прототипом, вы должны поставить jQuery.noConflict();
сразу после включения jQuery и перед любым другим кодом, который ожидает, что $
будет принадлежать другой библиотеке.Затем, как только вы это сделаете, $
не будет отображаться в jQuery, он будет использоваться другими библиотеками.
Вы не показываете, как вы включаете jQuery.Вот пример прямо со страницы jQuery doc для .noConflcit()
:
<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>
В вашем случае, я думаю, ваш код будет выглядеть следующим образом:
<link href="Lightbox/css/lightbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="Lightbox/js/prototype.js"></script>
<script type="text/javascript" src="Lightbox/js/scriptaculous.js?load=effects,builder"> </script>
<script type="text/javascript" src="Lightbox/js/lightbox.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function ($) {
$(document).ready(function () {
$("a[rel=lightbox[group1]]").live("click", function () {
$("a[rel^='lightbox[group1]']").lightbox();
return false;
});
});
// other jQuery code that uses $ can go here
})(jQuery);
// other jQuery code that uses jQuery (but not $) can go here or in other script tags
</script>
Порядок включения js-файлов в связи с вызовом jQuery.noConflict()
критически важен.