Will getElement() only work if the containing element is in the DOM?
For instance, I have this code (in a class):
processTemplate: function(template,classes,container){
var h = new Hash();
var element;
if ($defined(container)){
element = container.set('html',template);
} else {
element = new Element('div',{html: template});
}
classes.each(function(klass){
var el = element.getElement('.'+klass);
if ($defined(el)){
h.set(klass,el);
}
},this);
return h;
}
What this is suppossed to do is to take a passed in template as a
string and create a DOM object we can search in. Then it takes the
array of CSS class names to search for and tries to find them in the
element. If it does, it should add it to the hash which is then passed
back to the caller. However, when I run this it is not working. I'm
calling it like so:
var template = '<label class="class1"></label><input class="class2">";
var classes = ['class1','class2'];
var container = new Element('div');
var els = processTemplate(template, classes, container);
and els is coming back with no elements in it.
Can anyone see where this isn't working? I'm testing this in the
Clientcide interactive framework and am verifying all the proper
dependencies are loading including Selectors.js.
Any help would be appreciated.
Thanks,
jonlb