Ancora in cerca di una risposta.Il CSS non si applica agli elementi creati dinamicamente in IE 7?
Modifica o riassegnazione al filtro innerHTML
ridisegna correttamente l'elemento, ma interrompe il mio script, quindi non è disponibile.
L'aggiunta di nodi figlio aggiuntivi, inclusi i nodi di testo, non impone il ridisegno. La rimozione del nodo aggiunto non impone un ridisegno.
L'utilizzo della famiglia di script ie7.js non funziona.
Nel progetto cui sto lavorando, ho generare dinamicamente (con javascript) filtri che assomigliano a questo:
<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>
e devo CSS che si applica a ciascun filtro (per esempio):
.filter a.filter_delete_link{
display:block;
height:16px;
background: url('../images/remove_16.gif') no-repeat;
padding-left:20px;
}
Tuttavia, sembra in IE 7 (e probabilmente 6 per quella materia), questi stili non vengono applicati ai nuovi filtri.
Tutto funziona perfettamente in Firefox/Chrome/IE8.
Utilizzando gli strumenti di sviluppo di IE8, impostato sulla modalità IE7, il browser può vedere i nuovi elementi e può visualizzare il CSS, ma non applica il CSS.
C'è un modo per forzare IE a ricaricare gli stili, o forse c'è un modo migliore per risolvere questo problema?
La JavaScript: (semplificato)
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;
}
}
Nella tua pagina reale, hai più valori di "classe"? IE può essere piuttosto stupido riguardo alle regole ".foo .bar" quando il contenitore e il contenitore hanno entrambi valori multipli nella "classe". – Pointy
A punta, non uso più classi, e proprio per questo motivo :) Ho anche provato a semplificare il css semplicemente a ".filter_delete_link", ma non andare. –
IE6 ha problemi con più classi, IE7 non dovrebbe. –