webForumDet fria alternativet

Byta bakgrundsfärg 2 gånger med jQuery

JavaScriptur Javascript

4 svar · 429 visningar · startad av ramo_and

Medlem sedan nov. 2010214 inlägg
Frågan#1

Tjo!

Jag vill göra en enkel grej med jQuery när en vara läggs i varukorgen på min sida. Det som skall hända är att varukorgen ändrar färg till en lite mörkare och sen tillbaka till originalfärgen. Min kod för detta ser ut såhär:

	var urlHash = window.location.hash;
		if (typeof urlHash !=="undefined" && urlHash == "#addedtocart")
		{
			window.location.hash = "added";

			$(".object_linkbasket").attr('style', 'background: #222').delay(4000).attr('style', 'background: #eee').delay(4000);
		}

Det funkar inte till 100%. Det som inte funkar är bytet tillbaka (bakgrundsfärgen).

Detta funkar:

	var urlHash = window.location.hash;
		if (typeof urlHash !=="undefined" && urlHash == "#addedtocart")
		{
			window.location.hash = "added";

			$(".object_linkbasket").attr('style', 'background: #222').delay(4000)
		}

Hur löser jag detta?

Medlem sedan juni 20019 519 inlägg
#2

antingen få du ta reda på vad orginalbakgrunden är innan du byter den eller om det bara är style background på ditt element så ta du .removeAttr("style") på $(".object_linkbasket")

.delay vet jag inte riktigt om det hjälper för det är väl bundet för effects, vilket inte händer i din jQuery kod alls.

Medlem sedan nov. 2010214 inlägg
#3

Menar du såhär:

	var urlHash = window.location.hash;
		if (typeof urlHash !=="undefined" && urlHash == "#addedtocart")
		{
			window.location.hash = "added";

			$(".object_linkbasket").attr('style', 'background: #222').delay(4000).removeAttr('style').delay(4000);
		}
});

Detta funkar inte..

Originalbakgrunden är #eee. Anledningen till att jag har med delay är att jag vill att det ska ta 4 s innan effekten startar och sedan 4 s innan originalbakgrunden kommer tillbaka.

Medlem sedan juni 20019 519 inlägg
#4

Läs: http://api.jquery.com/delay/

The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases.

Du har inga jquery effects i din kod, därför kan inte delay fungera.

http://jsbin.com/ibakup/edit#javascript,html,live

Medlem sedan nov. 2010214 inlägg
#5

Tack så mycket! funkar fint :)

134 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)