Gå til innhold

JQuery hjelp, logikken min fungerer ikkje :(


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

Mulig se mer av koden? Tenkte for meg koden din og har ikke tittet på find() enda men vil regne med den titter i sub-tager av article#tilbud1. Er du sikker denne p tagen er under den?

Post gjerne mer kode.

Skrevet (endret)

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
Skrevet

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/ )

Skrevet

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

Skrevet

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();

Skrevet

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

Skrevet

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.

Skrevet

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

 

?

 

Er enda litt usikker på hva du vil sluttresultatet skal være, og hvorfor du vil ha ting på sånn og sånn måte.

 

http://xkcd.com/763/ ?

Skrevet

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 + ')' );

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