2010-12-27 10 views
0

Ich versuche, ein Toggle jQuery-Skript (siehe unten) zu verwenden, um eine Liste von Kommentaren ein-/ausblenden. Das Skript funktioniert gut, aber nach dem Implementieren einer unendlichen Bildlauffunktion wiederholt das Skript den "showtext" auf den vorherigen Posts (dh nach 3 Ladungen der nächsten Posts mit unendlichem Scroll gibt es 3 Kopien von "(show)") .mit jquery toggle mit unendlich scroll

Ich weiß, dies liegt an der Zeile "append" im Skript, aber wenn ich dies auskommentieren und einen Link auf der Seite mit class = "toggleLink" machen, schaltet der Inhalt nicht um. Der Text des Links ändert sich jedoch zum hideText, also frage ich mich, warum der Inhalt nicht erscheint. Danke für jede Hilfe!

$(document).ready(function() { 

// choose text for the show/hide link - can contain HTML (e.g. an image) 
var showText='show'; 
var hideText='hide'; 

// initialise the visibility check 
var is_visible = false; 

// append show/hide links to the element directly preceding the element with a class of "toggle" 
$('.toggle').prev().append(' (<a href="#" class="toggleLink">'+showText+'</a>)'); 

// hide all of the elements with a class of 'toggle' 
$('.toggle').hide(); 

// capture clicks on the toggle links 
$('a.toggleLink').click(function() { 

// switch visibility 
is_visible = !is_visible; 

// change the link depending on whether the element is shown or hidden 
$(this).html((!is_visible) ? showText : hideText); 

// toggle the display - uncomment the next line for a basic "accordion" style 
//$('.toggle').hide();$('a.toggleLink').html(showText); 
$(this).parent().next('.toggle').toggle('slow'); 

// return false so any link destination is not followed 
return false; 

}); 
}); 
+0

Wenn Sie Ihre jQuery-Version verwenden, finden Sie ['.live()'] (http://api.jquery.com/live/) nützlich, wenn Sie Elemente binden, die aus der Liste hinzugefügt/entfernt werden DOM. –

Antwort

1

Ich schuf eine Arbeit für dieses Problem. Obwohl es nicht die effizienteste Art ist, Dinge zu tun.

diese Zeile hinzufügen oberhalb der append() Zeile:

$('.toggleLink').remove(); 

Diese all ToggleLink Elemente entfernt, so dass, wenn die unendlichen Scroll-Läufe und den Toggle-Skript rufen kann die Show (Beseitigung von Dubletten) wieder eingesetzt werden.