jQuery selector ikke fundet

Tags:    javascript jquery

Hey Udviklere, er stucket i noget jQuery værk, heelp me!
Jeg har en tabel hvor den nederste række har et link i sig der ændrer indholdet i cellerne i rækken til input bokse. Ud over input boksene er der et link i højre side (min "submit knap").
Jeg har så lavet en funktion til når linket trykkes, linket vises, men funktionen køres ikke når jeg trykker der, i stedet går min browser til #.

Linket som bliver vist:
Fold kodeboks ind/udJScript kode 


Funktion der skal køres:
Fold kodeboks ind/udJScript kode 


Er det fordi at jQuery ikke kan selecte elementer som er tilføjet via jQuery??
Nogen idéer?



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hvis du tilføjer elementer via. jQuery skal disse nye elementer's events tilføjes eller opdateres efterfølgende.

Så har du et click-event på et element som ikke eksisterer endnu, virker det ikke.
Click-eventet skal registreres efter det nye element er blevet skabt.

Fold kodeboks ind/udJScript kode 


Hvis du vil sikre fremtidige elementer's events fra start kan du bruge jQuerys .on() function som kan registrere dynamisk skabte elementer.



Indlæg senest redigeret d. 30.04.2012 14:12 af Bruger #16319
Tag at lære at bruge .live i stedet, så skal du ikke konstant koncentrere dig om elementet er indlæst i dom. Eller genindlæse events ved indsættelse i dom.

http://api.jquery.com/live/

/J


.live() blev frarådet fra jQuery 1.7+ pga. performance problemer.
.on() er den nye metode til at binde events til dynamiske elementer.

Reference: http://api.jquery.com/live/



du kan vel lige så godt putte din click funciton på der hvor du laver dit link?
Fold kodeboks ind/udJScript kode 


men ellers skulle det virke, hvis du køre
Fold kodeboks ind/udJScript kode 

efter du har tilføjet linket til $row

edit:
da du søger efter a.admin_add_row i DOMen, findes den ikke med mindre du har tilføjet din $row til DOMen, men det ved jeg ikke om du har før du køre din kode, da du ikke har postet alt din kode, men kan løses ved at putte $row.find() så søger du i $row istedet.

men igen jeg syndes det er mere korrekt at tilføje dit click event på dit link når du opretter det.



Indlæg senest redigeret d. 29.04.2012 17:01 af Bruger #3427
Okay jeg har lavet en lille ændring, men jeg forstår stadigvæk ikke hvorfor min oprindelige kode ikke virker.

Jeg tog udgangspunkt i min oprindelige kode.
1) Klip linjen med $link ud af funktionen der ændrer $row i første omgang.
2) Indsæt $link før funktionen
3) Ændret $('a.admin_add_row') til $link
4) Derved sikres det at det er samme element der kan udføre funktionen

Dog vil jeg gerne stadigvæk have svar på hvorfor det ikke fungerer i første omgang!



prøvet lige det her, virker fint, prøv at lave en $row.find(..)

Fold kodeboks ind/udJScript kode 

har bare lige rettet det til lidt til da jeg ik har din table



Indlæg senest redigeret d. 29.04.2012 16:07 af Bruger #3427
Lige hvad jeg ledte efter! Tak for forklaringen! :D



Tag at lære at bruge .live i stedet, så skal du ikke konstant koncentrere dig om elementet er indlæst i dom. Eller genindlæse events ved indsættelse i dom.

http://api.jquery.com/live/

/J



t