2010-10-04 17 views
7

C'è un errore nella mia demo piuttosto grande in cui presumo che tutti i div al di sotto della classe saranno usati per allineare qualcosa. Ora mi rendo conto che ho bisogno di aggiungere un div extra al di fuori della parte che voglio allineare ma all'interno di .special.css non class select?

Come si scrive. Special div [NON classe]? o non c'è modo di fare questo e ho bisogno di riscrivere un sacco di HTML?

+4

Quali sono i browser è necessario essere compatibile con? Che dire di IE6 per esempio? Influenzerà direttamente la complessità della soluzione. –

risposta

1

Vorrei andare con jQuery o qualche altro Javascript Framework, i selettori solo rock e NON classe XY è piuttosto facile da raggiungere. Come ha fatto notare Pekka, non sono sicuro di quale fratello tu voglia colpire. getElementsByClassName() è implementato da quasi tutti i browser (sai quale non funziona, non è vero?).

Ho trovato un piuttosto nifty solution on devshed per fare anche il lavoro in IE:

onload=function(){ 
if (document.getElementsByClassName == undefined) { 
    document.getElementsByClassName = function(className) 
    { 
     var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)"); 
     var allElements = document.getElementsByTagName("*"); 
     var results = []; 

     var element; 
     for (var i = 0; (element = allElements[i]) != null; i++) { 
      var elementClass = element.className; 
      if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass)) 
       results.push(element); 
     } 

     return results; 
    } 
} 
} 

Tutto quello che dovete fare ora è quello di scorrere tutte le classi div e negare quello che non vogliamo.

+0

Hehe ... "Non sono sicuro di quale fratello si desideri indirizzare". Ti darei un umorismo in aumento se esistesse una cosa simile :) –

+0

'typeof x == 'undefined'' è migliore di' x == undefined' perché 'undefined' è solo una variabile globale che può essere impostata su qualsiasi cosa, ma 'typeof' è una parola chiave che restituisce sempre la stringa corretta. – casablanca

+1

@ Šime whoops ... Lo lascerò così com'è per il divertimento futuro @casablanca Sono sempre andato con quest'ultimo, ma la tua spiegazione mi dice che c'è un modo migliore. Grazie! –

8

CSS3 include il selettore not(). L'unico problema è (avete indovinato) nessuna compatibilità IE. Se sei disposto a richiedere Javascript da IE < 9 utenti, puoi ottenere la compatibilità IE con IE9.js.

5

+1 a entrambe le risposte sopra. io aggiungo che ero in grado di cavarsela con alcune cose, ma scrivendo questo nel blocco css per annullare l'effetto

some-type: inherit; 
+0

Questo è BRILLANTE - esattamente quello di cui avevo bisogno! – n8wrl