Div wird 3 mal hinzugefügt

Zack

cookies vader
Hallo,

das ganze ist etwas umfangreicher. Deshalb vorab einige Erklärungen:
Ich lade persistente Objekte von einem Webservice per SOAP und baue mir aus diesen einen JSON-String zusammen den ich dann an ein Template gebe. Diese Objeckthierarchie entspricht einem Baum und beinhaltet eine Ordnerstruktur und Dokumenten.
Diesen lese ich dann per jQuery aus und baue mir meine unterschiedlichen Ansichten zusammen. Dabei ist eine Navigation innerhalb der Ansicht möglich. Diese wechselt mit dem bekannten Slideeffekt eines Content Sliders.

Die HTML Struktur:
HTML:
...
	<div id="contentBrowserWarp">
		<div id="contentBrowserSlider"></div>
	</div>
...

Wenn ich jetzt tiefer in den Ordner navigiere, dann wird das Block-Element contentBrowserSlider immer erweitert (siehe Javascript Code), wenn ich eine Ebene höher navigiert wird, wird das vorletzte Element als genommen und das letzte raus gelöscht.
Der Witz ist jetzt allerdings: wenn ich tiefer navigiere, dann einen höher und dann wieder einen tiefer wird das Element (im Code die Variable "div") allerdings 3 mal angehängt.
Javascript:
/**
 * display the contentBrowser with given content and slide it in
 * @param content
 * 			String the content
 * @param direction
 * 			String direction
 */
function displayContent(content, direction){
	if(typeof(direction) == "undefined")
		direction = "left";
	var slider = $("#contentBrowserSlider");
	var width = parseInt($("#contentBrowserWidth").width());
	var left = parseInt(slider.position().left);
	var newLeft = (direction == "left") ? left - width : left + width;
	var isEmpty = true;
	
	if(slider.children().length > 0)
		isEmpty = false;

	var div = null;
	if(direction == "left"){
		div = $("<div/>").attr({
			"class" : "contentBrowser"
		}).css({
			"width" : width
		}).html(content);
	}else{
		div = $(".contentBrowser:last").prev();
	}
	function changeHeight(){
		var height = div.children().height();
		console.log(div.height());
		$("#contentBrowserWarp").animate({
			"height" : height + "px"
		});
		initNavigationHandler();
		if(direction == "right"){
			console.log($(".contentBrowser:last"));
			$(".contentBrowser:last").remove();
		}
	}
	
	if(!isEmpty){
		if(direction == "left"){
			slider.append(div).animate({
				"left" : newLeft + "px"
			}, changeHeight);
		}else{
			slider.animate({
				"left" : newLeft + "px"
			}, changeHeight);
		}
	}else{
		if(direction == "left")
			slider.append(div);
		changeHeight();
	}
	
}

Danke!
 
Ok ich hab raus gefunden das
Javascript:
$("tr.folder:not(tr.folderBack)").click(function(){
	openFolder($(this).data("path"), false);
});
openFolder mehrfach aufruft, was dazu führt das die Funktions mehrfach an das Element gebunden wurde.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück