(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi |
|
Alati teme | Način prikaza |
15. 03. 2007. | #1 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
jQuery zbun sa eventima...
Momci, navukli ste me na jQuery, sad pomagajte...
Postavio sam sledeću temu na jQuery mailing listu, rekoh možda bi i neko od vas hteo da porazmisli... Tema je na engleskom ali je čini mi se sve jasno. Hi everybody, I would be very grateful if someone could explain to me behaviour of the following simple piece of code, which is from my perspective a bit strange: PHP kôd:
http://radioni.ca/jquery-click.html so you can try it out yourselves. Click on the third button causes following alerts to be displayed:
Thanks in advance, I am not asking this just for fun, I have problems with submit event and I have created this code to simplify and illustrate. |
16. 03. 2007. | #2 |
Ivan Dilber
Sir Write-a-Lot
|
fora je da $('#btn1').get(0).onclick(); nece uraditi nista, dok ce $('#btn2').get(0).onclick(); pozvati onclick handler jer je on definisan explicitno..
upali firebug, pa prati sta se desava nakon klika na dugme, bice ti jasnije..
__________________
Leadership is the art of getting people to want to do what you know must be done. |
16. 03. 2007. | #3 | ||
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Citat:
Citat:
I to još ne daje odgovor na pitanje zašto se hendler za btn2 izvršava 4 (četiri) puta. |
||
16. 03. 2007. | #4 | ||
Ivan Dilber
Sir Write-a-Lot
|
Citat:
Sto se tice toga zasto $('btn2').click() pozove dvaput alert, to nisam ni primetio prvi put... to je zaista misterija... EDIT: U stvari evo provalio sam u cemu je fora, evo sta kaze help za trigger metodu: Citat:
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 16. 03. 2007. u 12:30. |
||
16. 03. 2007. | #5 | |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Citat:
Ajde sad, nije nešto ekstra bitno, cela stvar liči pomalo na akademsku raspravu (ko ikad ručno zove onClick?), ali ovo mi pravi relativno ozbiljan problem u jednoj real-life situaciji: Submit na form elementu ne okida onsubmit event ako se poziva ručno iz javaskripta (form.submit()). To je tako nevezano za jQuery, proizvođači browsera su jednostavno tako uradili. S obzirom da ASP.NET dobar deo postbackova radi preko form.submit(), MS je dodao parče javascripta koji ručno poziva onsubmit event pre submitovanja forme. E sad, zbog navedenog problema sa jQuery-jem, nijedna akcija koju na formu nakačim putem $('form').submit(funkcija) se ne izvrši. Rešio sam problem tako što onsubmit event kačim na stari način, umesto putem jQuery-ja. I nerviram se zato što moram da pravim workaround za nešto što samo po sebi treba da ti olakša život... A ovi na jQuery forumu me kuliraju. |
|
16. 03. 2007. | #6 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Hm, otvorio sam ticket i napisao sam peč, baš me interesuje da li će završiti u nekoj od sledećih verzija jQuery-ja...
http://dev.jquery.com/ticket/1053 |
16. 03. 2007. | #7 |
Ivan Dilber
Sir Write-a-Lot
|
palo mi je na pamet jedno sumanuto resenje za takav problem: over-rajdovati ugradjeni submit metod forme i onda umesto submita forma, dodati submit dugme i pozvati click() na njega. Zacudo ovo lepo radi u kombinaciji sa jQuery i u FF i u IE
Znam da nije narocito korisno, ali evo cisto kao proof of the concept: PHP kôd:
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 16. 03. 2007. u 16:10. |
16. 03. 2007. | #8 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Izgleda ok, kad stignem isprobaću kako se ponaša unutar ASP.NET-a (ovako kako stoji sad mislim da bi se alert pozivao dvaput), a i nisam potpuno siguran kako će .NET da reaguje na postback izazvan dinamički kreiranom kontrolom...
|
16. 03. 2007. | #9 |
Ivan Dilber
Sir Write-a-Lot
|
evo, uspeo sam da uradim ono sto sam prvobitno zeleo, mnogo elegantnije resenje:
HTML kôd:
<html> <head> <title></title> <script type="text/javascript" src="jquery-latest.js"></script> <script type="text/javascript"> $(function() { var submit_form = $('form').get(0).submit; //zapamtimo ugradjeni submit $('form').submit( function() { alert('Ovo je onSubmit handler'); // return false ovde ce spreciti submitovanje forme }); // preuzmemo submit metodu forme $('form').get(0).submit = function() { //vratimo ugradjeni metod da izbegnemo rekurziju $(this).get(0).submit = submit_form; $(this).submit(); // i uradimo submit + jQuery pozove handler } }); </script> </head> <body> <form name="frm" method="get" action=""> <input type="hidden" name="aaa" value="bbb" /> <input type="button" id="btn2" value="btn2" onclick="this.form.submit()" /> </form> </body> </html>
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 16. 03. 2007. u 17:47. |
16. 03. 2007. | #10 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Jašta, to je to. Ultimate ASP.NET/jQuery submit() fix, dok ovi ne isprave jQuery...
Evo ASP.NET kôda koji ilustruje problem sa komentarisanim fixom, preveo sam komentare ako još nekom nesrećniku zatreba: Kôd:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> <script type="text/javascript" src="jquery-latest.js"></script> <script type="text/javascript"> $(function() { $('#form1').submit( function() { alert('submit'); } ); /* // Ivanhoe's form.submit() fix: uncomment to put it in action var submit_form = $('form').get(0).submit; // remember default method // take over form's submit() $('form').get(0).submit = function() { // revert to default one to avoid recursion $(this).get(0).submit=submit_form; $(this).submit(); // do the submit + jQuery calls the handler } */ }); </script> </head> <body> <form id="form1" runat="server"> <div> <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton> <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </form> </body> </html> |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
jQuery hover | Damjan | (X)HTML, JavaScript, DHTML, XML, CSS | 11 | 11. 09. 2008. 14:57 |
Redizajniran jquery.com | kaizen | Opušteno | 13 | 06. 09. 2008. 15:29 |
jQuery i Ext | Ilija Studen | (X)HTML, JavaScript, DHTML, XML, CSS | 7 | 02. 03. 2007. 12:25 |