I’m building a very simplistic unordered list tree in XHTML with multiple levels deep. The way it works is that you click a parent node, and it uses the jQuery .load() API to make an AJAX call back to the server to see if this node has children. If it does, it inserts those nodes inside. When you click the parent link again, it does a .remove() to remove the children.
Everything works fine in Safari, Chrome, and FireFox. But in IE6, IE7, IE8, and Opera, it’s breaking.
In the IE’s, the code works when expanding parents to show children. But when I click the parents to hide the children again with the .remove(), it’s going into the children and doing a remove of their children, rather than itself.
In Opera, the code expands but then moves the margins over as it is expanded. Then, on remove, it exhibits the same problem as the IEs.
What could be causing this strangeness?
Sample posted here: http://volomike.com/downloads/sample1.tar.gz
OK, Volomike! I looked at your code an there were a few problems:
First, when you use
load, it doesn’t replace the selected node, it replaces its contents.So, you are calling load on a
libut also returning the sameliin your AJAX result. Subsequently, you are getting this:Also, you were closing it with two
</ul>tags in yourajax.phpline38instead of oneuland oneli.So, if you fix those things it should start working. That said, I would approach what you are doing totally differently. I hope this helps you out:
HTML
PHP
JS/jQuery