2010-10-04 9 views
7

To jest błąd w mojej dość dużej wersji demo, w której zakładam, że wszystkie elementy div w klasie specjalnej będą używane do wyrównania. Teraz rozumiem, że muszę dodać dodatkowy div poza częścią, którą chcę wyrównać, ale wewnątrz .special.css not class select?

Jak mogę napisać .special div [NOT someclass]? lub nie ma sposobu, aby to zrobić i muszę napisać dużo html?

+4

Jakie przeglądarki nie trzeba być zgodna z? Co na przykład w IE6? Będzie to miało bezpośredni wpływ na to, jak złożone będzie to rozwiązanie. –

Odpowiedz

1

Chciałbym pójść z jQuery lub innym JavaScript Framework, selektory po prostu rock i NIE klasa XY jest raczej łatwa do osiągnięcia. Jak zauważył Pekka, nie jestem pewien, do których braci chcesz trafić. Funkcja getElementsByClassName() jest implementowana przez prawie wszystkie przeglądarki (wiesz, która z nich nie działa, prawda?).

znalazłem dość fajną solution on devshed również sprawiają, że działa w 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; 
    } 
} 
} 

Wszystko, co musisz zrobić, to wykonać iterację wszystkich klas div i neguje jeden nie chcesz.

+0

Hehe ... "Nie jestem pewien, do których braci chcesz trafić". Dałbym ci humor, gdyby taka rzecz istniała :) –

+0

'typeof x == 'undefined'' jest lepsze niż' x == undefined', ponieważ 'undefined' jest po prostu zmienną globalną, która może być ustawiona na cokolwiek, ale 'typeof' jest słowem kluczowym, które zawsze zwraca poprawny ciąg znaków. – casablanca

+1

@ Šime whoops ... Zostawię to tak jak dla przyszłej zabawy @casablanca Zawsze chodziłem z tym ostatnim, ale twoje wyjaśnienie mówi mi, że jest lepszy sposób. Dzięki! –

8

CSS3 zawiera selektor not(). Jedynym problemem jest (zgadliście) brak kompatybilności IE. Jeśli chcesz korzystać z Javascript od IE < 9 użytkowników, możesz uzyskać zgodność IE z IE9.js.

5

+1 do obu powyższych odpowiedzi. dodam udało mi się uciec z niektórych rzeczy, ale piszę to w bloku css, aby cofnąć efekt

some-type: inherit; 
+0

To jest BRILLIANT - dokładnie to, czego potrzebowałem! – n8wrl

Powiązane problemy