2010-10-04 2 views
7

Theres ошибка в моей довольно большой демоверсии, где я предполагаю, что все divs под специальным классом будут использоваться для выравнивания чего-то. Теперь я понимаю, что мне нужно добавить дополнительный div вне части, которую я хочу выровнять, но внутри .special.css не класс select?

Как написать .special div [NOT someclass]? или нет способа сделать это, и мне нужно переписать много html?

+4

Какие браузеры вы должны быть совместимы с? Что относительно IE6, например? Это напрямую повлияет на то, насколько сложным будет решение –

ответ

1

Я бы пошел с jQuery или какой-либо другой Javascript Framework, селекторов просто рок и НЕ класс XY довольно легко достичь. Как указал Пекка, я не уверен, к каким братиям вы хотите прицелиться. getElementsByClassName() реализуется почти всеми браузерами (вы знаете, какой из них не работает, не так ли?).

я нашел довольно изящный solution on devshed также заставить его работать в 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; 
    } 
} 
} 

Все, что вам нужно сделать сейчас, чтобы перебрать все ваши классы Див и свести на нет тот, который вы НЕ хотите.

+0

Хе-хе ... «Я не уверен, к каким братиям вы хотите нацелиться». Я бы дал вам юмористический взлет, если бы такая вещь существовала :) –

+0

'typeof x == 'undefined'' лучше, чем' x == undefined', потому что 'undefined' - это просто глобальная переменная, которая может быть установлена ​​на что угодно, но 'typeof' - это ключевое слово, которое всегда возвращает правильную строку. – casablanca

+1

@ Šime whoops ... Я оставлю это, как и для будущей забавы @casablanca. Я всегда ходил с последним, но ваше объяснение говорит мне, что есть лучший способ. Благодаря! –

8

В CSS3 включен переключатель not(). Единственная проблема (вы уже догадались) не совместимы с IE. Если вы хотите потребовать Javascript от IE < 9 пользователей, вы можете получить совместимость IE с IE9.js.

5

+1 для обоих ответов выше. я добавлю я смог уйти с некоторыми вещами, но пишу это в блоке CSS, чтобы отменить эффект

some-type: inherit; 
+0

Это БРИЛЛИАНТ - именно то, что мне нужно! – n8wrl

Смежные вопросы