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!
hur ser din HTML struktur ut?
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...
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;
}
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.
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.
<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?
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.
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.
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...
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?
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...