Avatar billede cygnet Praktikant
02. august 2011 - 16:29 Der er 9 kommentarer og
1 løsning

jQuery - kan ændre aktuelle ID

Hejsa,

Jeg har følgende java script:

if (location.href.indexOf('/shop/nyheder-32c1.html') != -1){
    if ($('#ProductImage a img').attr('src').indexOf('-t.') != -1){
        $('#ProductImage a img').width(366).attr('src',$('#ProductImage a img').attr('src').replace('-t.','.'));
        $('#ProductImage a img').parent().removeAttr('href');
    }
}

Problemet her er at det aktuelle id, altså ProductImage, er flere gange på siden og det andre for alle stederne, i stedet kun for den éne aktuelle?

Tak.
Avatar billede jokkejensen Novice
02. august 2011 - 17:16 #1
et ID skal være unikt, dvs du bør benytte classer til at sige om det er et produktbillede.

Har du flere, så brug:

$("#ProductImage").each(function(){
    var image = $(this).find("a img");
    var link = $(this).find("a");
   
});
Avatar billede jokkejensen Novice
02. august 2011 - 17:22 #2
Desuden hedder id'erne i dandomain ikke alle sammen det samme, de har valid html.

Forklar hvad du ønsker at opnå på den ønskede kategori side med de billeder der ?
Avatar billede cygnet Praktikant
02. august 2011 - 17:26 #3
Jeg ønsker at manipulerer url'en på alle billederne. Idet har jeg selv sat, jeg kan godt lave en classe i stedet, men ikke unik for hvert billede.

Det det hjælpe dig på vej med en løsning?
Avatar billede cygnet Praktikant
02. august 2011 - 17:47 #4
Er nu kommet frem til :

    $(".ProductImage").each(function(){
 
        var image = $(this).find("img").width(366);
   
    });

Hvor jeg får ændret bredden på billedet. Ved du hvordan jeg så ændre urlen på billedet, altså erstatter "-t." med "." og fjernet linket omkring billedet?

Tak.
Avatar billede olebole Juniormester
02. august 2011 - 20:31 #5
<ole>

Ikke med brug af jQuery, men i logisk, gennemskuelig og let modificerbar kode, der gør det samme:


var elmImg, elmA, a = document.getElementsByTagName("*");
for (var i=a.length-1; i>=0; i--) {
    if (a[i].className=="ProductImage") {
        elmImg = document.getElementsByTagName("img")[0];
        elmA = elmImg.parentNode;
        elmA.parentNode.insertBefore(elmImg, elmA);
        elmA.parentNode.removeChild(elmA);
        elmImg.style.width = "366px";
    }
}


Du kan evt. skifte stjernen i document.getElementsByTagName("*"); med et passende tagName, hvis det altid er samme slags element, du søger efter. Det gør koden væsentligt mere effektiv - også i forhold til din jQuery kode

/mvh
</bole>
Avatar billede olebole Juniormester
02. august 2011 - 20:34 #6
Nåja ... sovsen skulle også skiftes  =)


var elmImg, elmA, a = document.getElementsByTagName("*");
for (var i=a.length-1; i>=0; i--) {
    if (a[i].className=="ProductImage") {
        elmImg = document.getElementsByTagName("img")[0];
        elmA = elmImg.parentNode;
        elmA.parentNode.insertBefore(elmImg, elmA);
        elmA.parentNode.removeChild(elmA);
        elmImg.style.width = "366px";
        elmImg.setAttribute("src", elmImg.getAttribute("src").replace("-t", "."));
    }
}

Avatar billede olebole Juniormester
02. august 2011 - 20:36 #7
Hmmmm ...!


var elmImg, elmA, a = document.getElementsByTagName("*");
for (var i=a.length-1; i>=0; i--) {
    if (a[i].className=="ProductImage") {
        elmImg = a[i].getElementsByTagName("img")[0];
        elmA = elmImg.parentNode;
        elmA.parentNode.insertBefore(elmImg, elmA);
        elmA.parentNode.removeChild(elmA);
        elmImg.style.width = "366px";
        elmImg.setAttribute("src", elmImg.getAttribute("src").replace("-t", "."));
    }
}


- selvfølgelig  =)
Avatar billede cygnet Praktikant
03. august 2011 - 10:09 #8
Smukt! Det virkede Ole.

Kan du ligge et svar?
Avatar billede olebole Juniormester
03. august 2011 - 13:08 #9
Njarhh ... i teorien kunne jeg lægge et - men jeg samler ikke længere points, men tak for tilbudet  =)

Læg selv et svar og accepter det, så tråden lukkes
Avatar billede cygnet Praktikant
03. august 2011 - 13:10 #10
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester