Still looking for an answer.
Changing or reassigning to the filter\'s innerHTML
successfully redraws the element, but breaks my script, so that\'s out.
Sounds to me like you need to force a redraw of the UI for this element. There are several ways to do this, but the following is the most effective method...
// elm is a reference to your element
var disp = elm.style.display;
elm.style.display = "none";
var redrawFix = elm.offsetHeight;
elm.style.display = disp;
Here is another method I found on Ajaxian...
function redraw(elm) {
var n = document.createTextNode(' ');
elm.appendChild(n);
setTimeout(function(){ n.parentNode.removeChild(n) }, 0);
return elm;
}