Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Jak wykonać kod Jquery przed zaincludowaniem biblioteki Jquery?
Twist
post
Post #1





Grupa: Zarejestrowani
Postów: 174
Pomógł: 11
Dołączył: 12.10.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


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ść

Ten post edytował Twist 21.06.2012, 10:03:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


http://stackoverflow.com/questions/799981/...-without-jquery

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

Ten post edytował wNogachSpisz 20.06.2012, 22:35:13
Go to the top of the page
+Quote Post
Twist
post
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 11
Dołączył: 12.10.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----




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. };


Ten post edytował Twist 21.06.2012, 10:03:24
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #4





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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ą..

Ten post edytował wNogachSpisz 21.06.2012, 10:28:09
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:32