2009-03-04 4 views
4

Ich habe eine Schaltfläche, die ich den Hintergrund ändern möchte, um zu zeigen, dass es deaktiviert ist, wenn ein Benutzer darauf klickt. Es funktioniert gut in IE/FF, aber in Chrome scheint es, dass es das Hintergrundbild nicht finden kann und den Hintergrund nichts macht.JQuery in Google Chrome kann kein Hintergrundbild finden

alt text

Ich mache nur eine einfache CSS-Set in jQuery 1.2.6

$(".CheckoutBt").css("background-image", "url(/Portals/_default/images/buttons/checkout-end-disabled.gif)"); 
+0

Ich habe auch versucht, jquery 1.3.2 und es macht keinen Unterschied – Alex

Antwort

5

Ok ich das Problem auf die Spur geschafft haben. Wie tvafosson sagte, ist dies darauf zurückzuführen, dass WebKit die Bilder nicht herunterlädt. Um dies zu umgehen laden ich nur die beiden Bilder in der unclicked Klasse

<style> 
.unclicked { 
background-image: url('/Portals/_default/images/buttons/checkout-end-disabled.gif'); 
background-image: url('/Portals/_default/images/buttons/checkout-end.gif'); 
} 
.clicked { 
    background-image: url('/Portals/_default/images/buttons/checkout-end-disabled.gif'); 
} 
</style> 
+0

Das ist praktisch zu sehen, wie nur WebKit (derzeit) mehrere Hintergrundbilder unterstützt. – alex

1

So wie ich angehen würde dies mit Klassen ist. Haben Sie separate CSS-Klassen für jeden der Schaltflächenstatus, dann verwenden Sie einfach jQuery, um die Klasse der Schaltfläche zu ändern. Dies würde sicherstellen, dass alle Bilder tatsächlich heruntergeladen werden und verfügbar sind, wenn Sie die Klasse festlegen - da denke ich, dass Chrome fehlschlägt (wahrscheinlich würden dies alle WebKit-Browser tun). Versuchen

<style> 
.unclicked { 
... 
} 
.unclicked :hover { 
... 
} 
.clicked { 
    background-image: url('/Portals/_default/images/buttons/checkout-end-disabled.gif'); 
} 
</style> 
... 
$(".CheckoutBt").click(function() { 
    $(this).removeClass('unclicked').addClass('clicked'); 
    ...do what ever action... 
}); 
+0

Ich habe versucht mit Klassen als auch und es tut das gleiche. – Alex

+0

Funktioniert es, wenn die "angeklickte" Klasse die Standardklasse ist, d. H., Sehen Sie dann den richtigen Hintergrund? Ich versuche nur einzugrenzen, ob es das Ersatz- oder das tatsächliche Bild ist, das das Problem verursacht. – tvanfosson

+0

Wenn angeklickt ist der Standard zeigt es die angeklickten Bilder – Alex

0

den vollen "Hintergrund", "url (/Portals/_default/images/buttons/checkout-end-disabled.gif) 0 0 no-repeat".

1

Statt "background-image" Verwendung "Background"

0

ich auch alle Bilder Ihren Hintergrund zu einem einzigen Bild vorschlagen würde die Konsolidierung like this. Sie verwenden dann background-position Offsets, um Ihre Rollover-Effekte auszuführen. Sie können diese Technik noch weiter ausnutzen, indem Sie ein sehr langes Tastenbild (sowohl im Normal- als auch im Rollover-Zustand) erstellen und es links und rechts ausrichten, um Ihre "Schiebetüren" zu erzeugen.