Gå til innhold

JQuery hjelp, logikken min fungerer ikkje :(


Anbefalte innlegg

Hei.

 

Eg sitter å pynter på ei nettside nå og skal laste inn fire billeter, kor eg bruker JQuery og etter biletet er lastet inn skal eg fjerne ein "p" tag. Eg prøver å gjer det slik:

$('article#tilbud1').css({'Background-image':'url("Bilder/nettsideTilbud.png")'}, bileteFerdigLastet($(this)));

function bileteFerdigLastet(a){
 a.find('p.lasterArtikkel').remove();
}

 

Grunnen til at eg setter a.find(etc.. er fordi denne delen av koden vil vere lik for kvart bilete, men det fungerer ikkje :(

 

 

Nokon ideer?

Lenke til kommentar
Videoannonse
Annonse

Referer til html kode:

<article style="background-color:#234" id="tilbud1" class="tjenester">
  <hgroup><h2>Nettside</h2><h6>Er på jakt etter ei nettside, men aner ikkje kva som ligger bakom eit slikt prosjekt?</h6><span></span></hgroup>
  <p class="lasterArtikkel" style="margin:20% 0 0 45%;">Artikkel lastes inn...</p>
 </article>

 

Ignorer stiltaggen for artikkelen, eg bruker farver for å lettere sjå kor blokkene er :)

Endret av Fylling
Lenke til kommentar

Uten at jeg har lest med opp på det, ser jeg muligens problem. .css-funksjonen manipulerer kun CSS-regelsettet nettleseren bruker, og hopper videre med en gang det er gjort. Dette skjer da samtidig med at nettleseren starter å laste inn bildet, og nettleseren har ikke bildet på plass i det .css-funksjonen er ferdig med å kjøre.

 

Er også flere syntax-feil med koden din. Dette er nok mer korrekt:

 

$('article#tilbud1').css({'Background-image','url("Bilder/nettsideTilbud.png")'}).bileteFerdigLastet($(this));

 

Er ikke godt nok kjent med JS til å vite om man kan "chaine" egendefinerte funksjoner på den måten du gjør det nå.

 

Kjapt notat: hgroup blir fjernet fra HTML5 ( http://html5doctor.com/the-hgroup-element/ )

Lenke til kommentar

Uten at jeg har lest med opp på det, ser jeg muligens problem. .css-funksjonen manipulerer kun CSS-regelsettet nettleseren bruker, og hopper videre med en gang det er gjort. Dette skjer da samtidig med at nettleseren starter å laste inn bildet, og nettleseren har ikke bildet på plass i det .css-funksjonen er ferdig med å kjøre.

 

Er også flere syntax-feil med koden din. Dette er nok mer korrekt:

 

$('article#tilbud1').css({'Background-image','url("Bilder/nettsideTilbud.png")'}).bileteFerdigLastet($(this));

 

Er ikke godt nok kjent med JS til å vite om man kan "chaine" egendefinerte funksjoner på den måten du gjør det nå.

 

Kjapt notat: hgroup blir fjernet fra HTML5 ( http://html5doctor.c...hgroup-element/ )

 

uhm, nei.. Trur du nettopp lagde fleire syntax feil :p

Lenke til kommentar

Problemet her er vel at du bruker css background taggen,.. Den vil calle neste funksjon når css blir satt, ikke når ferdig utført (bilde lastet).

 

vanlige img tagger har en onload event : http://api.jquery.com/load-event/

 

Du kan trolig få trikset til noe a la det du vil ha via det

 

Eg vil at det skal skje etter biletet er satt. Fjør gjor eg det slik som fungerer fint:

$('article#tilbud1').css({'Background-image':'url("Bilder/nettsideTilbud.png")'}).find('p.lasterArtikkel').remove();

Lenke til kommentar

Etter bildet er satt som i background css satt? Isåfall fungerer den koden du nettopp pastet fint. Hvis du vil at det skal skje etter bildet har lastet, så kan du etter det jeg vet ikke gjøre det med css background-image

 

Eg skreiv at forrige koden fungerer :p

Målet er å sette ein funksjon for siste delen av kvar kode som eg kan bruke om igjen når det trengs.

Lenke til kommentar

Finnes ikke noen elegant måte å gjøre det på, men du kan jo ta en workaround og liksom-preloade bildet samtidig som du setter det, da du kan følge med på når innlastingen i et bildeelement er ferdig:

 

var article = $( 'article#tilbud1' );
var url = 'Bilder/nettsideTilbud.png';
var img = $( document.createElement( 'img' ) );

img.on( 'load', function () {
 article.find( 'p.lasterArtikkel' ).remove();
} );

img.attr( 'src', url );
article.css( 'background-image', 'url(' + url + ')' );

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...