webForumDet fria alternativet

jQuery - Toggle() repeteras!?

11 svar · 782 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 528 inlägg
#1

Hej,

Använder det här för att visa/dölja ett lager:

$('.read-more').click(function(){
	$(this).parent().prev().slideToggle();
	$(this).toggleClass('read-less').text(($(this).is(":contains('" + READMORE + "')") ? READLESS : READMORE));
	return false;
});

Problemet är att vid klick på länken visas lagret men döljs direkt igen. Den "stannar" alltså inte i expanderat läge av någon anledning.

Jag förstår inte alls vad som händer och hittar ingen info om det när jag googlar. Förslag? Tack!

voigtann1Medlem sedan juni 20018 810 inlägg
#2

hur ser din HTML struktur ut?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#3

voigtann1 skrev:

hur ser din HTML struktur ut?

Såhär:

<h1>Om</h1>

<p>Ett stycke som kortfattat beskriver innehållet...</p>

<div style="display: none;">
<p>...följt av en mycklet längre text...</p>
</div>
<p><a href="#" class="read-more">Läs mer</a></p>

Men det är helt sjukt, jag vet att det har fungerat från början, men sen var jag och pillade på classnamn osv. och då blev det såhär. Har återställt det som det var men ändå får jag inte till det längre. Kör Firefox...

MickeA.comMedlem sedan feb. 20034 528 inlägg
#4

Flyttade "ut" allt från $(document).ready(); istället och det fungerar direkt, märkligt...

function showhide(obj){
	$(obj).parent().prev().toggle('fade');
	$(obj).toggleClass('read-less').text(($(obj).is(":contains('" + READMORE + "')") ? READLESS : READMORE));
	return false;
}
voigtann1Medlem sedan juni 20018 810 inlägg
#5

den kod du postade ovan tillsammans med den html struktur som du postar fungerar perfekt för mig

$(function() { //domready
	$('.read-more').click(function(){
		$(this).parent().prev().slideToggle();
		$(this).toggleClass('read-less').text(($(this).is(":contains('" + READMORE + "')") ? READLESS : READMORE));
		return false;
	});
});

Dock ser jag inte vad du har för värde på READMORE och READLESS men det bör inte påverka din kod.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#6

Precis, det funkade som sagt kanonbra hos mig från början, men sen ändrade jag '.read-more' till '#rm' och då "studsade" animationen, den fälldes ut och drogs ihop direkt. Fortfarande samma fel efter att jag genom CTRL-Z ångrat mina ändringar.

Det luktar bugg i Firefox här, eller kanske något tillägg (Firebug...?) som fått fnatt... Direkt när jag flyttade ut blocket så fungerade allt igen.

READMORE har värdet 'Läs mer' och READLESS 'Dölj text', inget konstigt med det.

voigtann1Medlem sedan juni 20018 810 inlägg
#7
<p><a href="#" class="read-more">Läs mer</a></p>

till

<p><a href="#" class="read-more" id"rm">Läs mer</a></p>

och kör:

$(function() { //domready
	$('#rm').click(function(){
		$(this).parent().prev().slideToggle();
		$(this).toggleClass('read-less').text(($(this).is(":contains('" + READMORE + "')") ? READLESS : READMORE));
		return false;
	});
});

same result, kan det vara så att du kör funktionen två gånger?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#8

Nej, det är inte möjligt, men "kan" det kanske vara så att något (t.ex. Firefox) triggade .click() både vid mousedown och mouseup? Jag tycker att det här är helt sinnessjukt konstigt.

voigtann1Medlem sedan juni 20018 810 inlägg
#9

MickeA.com skrev:

Nej, det är inte möjligt, men "kan" det kanske vara så att något (t.ex. Firefox) triggade .click() både vid mousedown och mouseup? Jag tycker att det här är helt sinnessjukt konstigt.

Vad gav den för text när du kör då? för det låter exakt som när toggle() körs två gånger direkt efter varandra

$.click() är inte samma sak som firefox .click event, så det har jag svårt att tro att jquery har missat, lägg in en log på funktionen för att se vad/när skriptet körs, om det är på mousedown.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#10

Jo, jag vet att det "känns" som om den körs två gånger, men funktione fanns bara på ett ställe i koden, det vet jag. Det slutade som sagt helt plötsligt att fungera och sen ville det inte fungera igen, det är därför jag tror att det kunde ha varit en bugg eller liknande...

voigtann1Medlem sedan juni 20018 810 inlägg
#11

Kan du återskapa felet?
Vad kör du för version av jquery?
Vad kör du för webbläsare när du får felet?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#12

Jag återkommer imorrn, håller på att kollapsa av trötthet samtidigt som jag håller på och bråkar med en multidimensionell array... jobbigt...

129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)