¿CSS no se aplica a elementos creados dinámicamente en IE 7?

Sigo buscando una respuesta.

Cambiar o reasignar a los filtrosinnerHTML vuelve a dibujar con éxito el elemento, pero rompe mi script, así que eso está fuera.

Agregar nodos secundarios adicionales, incluidos nodos de texto, no obliga a volver a dibujar. Eliminar el nodo agregado no obliga a volver a dibujar.

Usar la familia de scripts ie7.js no funciona.

En el proyecto en el que estoy trabajando, genero dinámicamente (con javascript) filtros que se ven así:

<div class="filter">
    <a ... class="filter_delete_link">Delete</a>
    <div class="filter_field">
        ...
    </div>
    <div class="filter_compare">
        ...
    </div>
    <div class="filter_constraint">
        ...
    </div>
    <div class="filter_logic">
        ...
    </div>
</div>

Y tengo CSS que se aplica a cada filtro (por ejemplo):

.filter a.filter_delete_link{
    display:block;
    height:16px;
    background: url('../images/remove_16.gif') no-repeat;
    padding-left:20px;
}

Sin embargo, parece que en IE 7 (y probablemente 6 para el caso), estos estilos no se aplican a los nuevos filtros.

Todo funciona perfectamente en Firefox / Chrome / IE8.

Usando las herramientas de desarrollador IE8, configuradas en modo IE7, el navegador puede ver los nuevos elementos y puede ver el CSS, pero simplemente no está aplicando el CSS.

¿Hay alguna manera de obligar a IE a recargar estilos, o tal vez hay una mejor manera de solucionar esto?

El JavaScript: (simplificado)

var builder = {
    ...
    createNewFilter: function() {
        var newFilter = document.createElement('div');

        var deleteLink = document.createElement('a');
        deleteLink.href = '#';
        deleteLink.setAttribute('class','filter_delete_link');
        deleteLink.title = 'Delete Condition';
        deleteLink.innerHTML = "Delete";
        newFilter.appendChild(deleteLink);

        var field = document.createElement('div');
        field.setAttribute('class','filter_field');
        var fieldSelect = this.getFieldSelectBox();
        field.appendChild(fieldSelect);
        newFilter.appendChild(field);

        // more of the same...

        deleteLink.onclick = function() {
            builder.removeFilter(newFilter);
        };
        fieldSelect.onchange = function () {
            builder.updateFilter(newFilter);
        }

        return newFilter;
    },
    addNewFilter: function() {
        var nNewFilter = this.createNewFilter(this.numFilters++);
        this.root.insertBefore(nNewFilter,this.nAddLink);

        //other unrelated stuff...

        //provided by Josh Stodola
        //redraw(this.root);

        return nNewFilter;
    }
}

Respuestas a la pregunta(7)

Su respuesta a la pregunta