Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jak wykonać kod Jquery przed zaincludowaniem biblioteki Jquery?
Forum PHP.pl > Forum > Przedszkole
Twist
Problem rozwiazany - nakierował mnie WNogachśpisz a dalej było juz z górki.

Muszę wykonac kod jquery:

  1.  
  2. $('#locationsList option').click(function () {
  3. window.location.href = this.value;
  4. });
  5.  


Biblioteke jquery includuje póxniej, poza <body>

Mam dostęp tylko do body, nie moge przenieść inicjalziacji biblioteki, nie moge przenieść nic - mam bardzo ograniczone pole.
Próbowałem w ten sposób:
  1. window.onload = function () {
  2. $('#locationsList option').click(function () {
  3. window.location.href = this.value;
  4. });
  5. };  


ale nie działa w Chrome.
Wiem, ze można to zrobić bez Jquery, ale
- nie bardzo wiem, jak to zrobić w czystym JS (wydaje mi sie, ze bedzie troche kombinowania z roznymi przegladarkami)
- chciałbym wiedzieć, jak rozwiazać taki problem na przyszłość
wNogachSpisz
http://stackoverflow.com/questions/799981/...-without-jquery

// edit
przed chwila przypadkiem wpadlem jeszcze na cos takiego: http://code.google.com/p/domready/
Twist


Wrzuciłem ten fragment:
  1. function bindReady(){
  2. if ( readyBound ) return;
  3. readyBound = true;
  4.  
  5. // Mozilla, Opera and webkit nightlies currently support this event
  6. if ( document.addEventListener ) {
  7. // Use the handy event callback
  8. document.addEventListener( "DOMContentLoaded", function(){
  9. document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
  10. jQuery.ready();
  11. }, false );
  12.  
  13. // If IE event model is used
  14. } else if ( document.attachEvent ) {
  15. // ensure firing before onload,
  16. // maybe late but safe also for iframes
  17. document.attachEvent("onreadystatechange", function(){
  18. if ( document.readyState === "complete" ) {
  19. document.detachEvent( "onreadystatechange", arguments.callee );
  20. jQuery.ready();
  21. }
  22. });
  23.  
  24. // If IE and not an iframe
  25. // continually check to see if the document is ready
  26. if ( document.documentElement.doScroll && window == window.top ) (function(){
  27. if ( jQuery.isReady ) return;
  28.  
  29. try {
  30. // If IE is used, use the trick by Diego Perini
  31. document.documentElement.doScroll("left");
  32. } catch( error ) {
  33. setTimeout( arguments.callee, 0 );
  34. return;
  35. }
  36.  
  37. // and execute any waiting functions
  38. jQuery.ready();
  39. })();
  40. }
  41.  
  42. // A fallback to window.onload, that will always work
  43. jQuery.event.add( window, "load", jQuery.ready );

i dalej moj kod
  1. window.onload = function () {
  2.  
  3. $('select#locationsList option').click(function () {
  4. alert(this.value);
  5. window.location.href = this.value;
  6. });
  7.  
  8. };
  9.  


Dziala tylko w FF. W chrome i IE nie wsykakuej nawet alert. Co jest nie tak?


rozwiązanie:
  1. //najpierw bindujemy ready, nastepnie
  2. window.onload = function () {
  3.  
  4. $("select#locationsList").change(function () {
  5. $("option:selected", $(this)).each(function () {
  6. window.location.href = this.value;
  7. });
  8.  
  9. });
  10.  
  11. };
wNogachSpisz
No nie, window.onload jest do dupy, juz lepiej daj body load="func()".
Uzasadnienie: http://stackoverflow.com/questions/559150/...g-window-onload

Dostałeś dwa dobre rozwiązania, a wynalazłeś sobie trzecie które nie będzie działać.. Ręce opadają..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.