At the moment we are migrating to Drupal and Drupal uses jQuery as JSLib which uses $() as a function too. Do you think I can build my own Prototype.js that doesn''t conflict with jQuery by replacing all occurencs of $( with $ID( in prototype or is there some code that could break? Greets Uwe L. Korn PS: I''m not able to rename any functions in jQuery even it would be simpler. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Actually jQuery is already prepared for easy alias renaming. If you are using a more recent version (jQuery 1.1+) you can use the jQuery.noConflict() method [1]. Otherwise, in older versions you can manually change it by adding this snippet of code: $ = jQuery._$; After doing that you can now use jQuery instead of $ to use jQuery methods. You can still safely use the jQuery plugins, since they should not be relying on the $ alias. If you would like to change the alias to something like $j, you could do the following. var $j = jQuery.noConflict() // only on newer versions jQuery 1.1 // older version of jQuery (jQuery 1.0.4 or less) $ = jQuery._$; $j = jQuery; However, I just checked Drupal''s own JavaScript and they do rely on the $ alias. So, doing the above would break their code. Hopefully we can work with Drupal to remove the dependency on the $ alias and avoid this conflict in the future. Until then, you can use something like this to change the prototype alias. var $p = jQuery._$; Now you can use $p for your prototype scripts. Note: For the above to work, jQuery needs to be included after Prototype. Otherwise, if jQuery is included before prototype, then you will need to do something like this to avoid breaking Drupal''s code. var $p = $; var $ = jQuery; Hope that helps! [1]: http://docs.jquery.com/Core#.24.noConflict.28.29 -- Brandon Aaron On 3/17/07, xhochy <xhochy-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> > At the moment we are migrating to Drupal and Drupal uses jQuery as > JSLib which uses $() as a function too. Do you think I can build my > own Prototype.js that doesn''t conflict with jQuery by replacing all > occurencs of $( with $ID( in prototype or is there some code that > could break? > > Greets > Uwe L. Korn > > PS: I''m not able to rename any functions in jQuery even it would be > simpler. > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Ok I solved it, I made myself a script which replaces all occurences of $ with $ID, but leaves all other functions as they are. I made the generated prototype.js available at http://xhochy.org/en/2007/03/18/using-prototype-with-drupal-5/ Aaron workaround did not work, because it breaks Drupal (Part 1 of it), because Drupal uses jQuery''s $ directly, or it breaks Prototype(Part 2 of it), because when renaming the $()-function of Prototype just in time, the code of Prototype is broken since prototype uses $() itself. Hope this solves a problem for other Drupal+Prototype Developers too. Greets Uwe Brandon Aaron schrieb:> Actually jQuery is already prepared for easy alias renaming. If you > are using a more recent version (jQuery 1.1+) you can use the > jQuery.noConflict() method [1]. Otherwise, in older versions you can > manually change it by adding this snippet of code: > > $ = jQuery._$; > > After doing that you can now use jQuery instead of $ to use jQuery > methods. You can still safely use the jQuery plugins, since they > should not be relying on the $ alias. > > If you would like to change the alias to something like $j, you could > do the following. > > var $j = jQuery.noConflict() // only on newer versions jQuery 1.1 > > // older version of jQuery (jQuery 1.0.4 or less) > $ = jQuery._$; > $j = jQuery; > > > However, I just checked Drupal''s own JavaScript and they do rely on > the $ alias. So, doing the above would break their code. Hopefully we > can work with Drupal to remove the dependency on the $ alias and avoid > this conflict in the future. > > Until then, you can use something like this to change the prototype alias. > > var $p = jQuery._$; > > Now you can use $p for your prototype scripts. > > Note: For the above to work, jQuery needs to be included after > Prototype. Otherwise, if jQuery is included before prototype, then you > will need to do something like this to avoid breaking Drupal''s code. > > var $p = $; > var $ = jQuery; > > Hope that helps! > > [1]: http://docs.jquery.com/Core#.24.noConflict.28.29 > > -- > Brandon Aaron > > On 3/17/07, xhochy <xhochy-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> At the moment we are migrating to Drupal and Drupal uses jQuery as >> JSLib which uses $() as a function too. Do you think I can build my >> own Prototype.js that doesn''t conflict with jQuery by replacing all >> occurencs of $( with $ID( in prototype or is there some code that >> could break? >> >> Greets >> Uwe L. Korn >> >> PS: I''m not able to rename any functions in jQuery even it would be >> simpler. >> >> >> > > --~--~---------~--~----~------------~-------~--~----~ > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. > To post to this group, send email to rubyonrails-spinoffs@googlegroups.com > To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en > -~----------~----~----~----~------~----~------~--~--- > > >