Прежде всего, вам нужен способ отладки происходящего. Есть такие вещи, как Firebug lite, которые вы можете проверить, но я бы посоветовал просто разместить пару предупреждений.
$("a.addnode").live("click", function() {
alert('click caught');
if($(this).parent().children("ul").html() == null){
alert('no children');
leafHtml = ...;
$(this).parent().append(leafHtml);
}
else{
alert('children');
leafHtml = ...;
$(this).parent().children("ul").append(leafHtml);
}
alert('end');
initTree();
});
Вы будете знать, что называется get, а что не вызывается, вместо того, чтобы гадать. Если предположить, есть две ошибки, которые вызывают эту проблему. Ваш селектор в порядке.
1: $ (this) .parent (). Children ("ul"). Html () == null никогда не будет истинным. Вы должны проверить вместо $ (this) .parent (). Children ("ul"). Children (). Length == 0.
2: $ (this) .parent (). Children ("ul"). Append (leafHtml) не имеет смысла. Текст внутри ul недействителен, и я не удивлюсь, если IE6 просто проигнорирует его (так и должно быть).
Я подозреваю, что # 1 делает # 2 всегда случайным, и, поскольку это неверно, IE6 просто игнорирует его.