7

The question is simple, the answer maybe not.

I'm trying to apply several styles to all input elements without an specific id. I use this selector in my CSS stylesheet: input[id!='move'] but unfortunately it's not working either in IE10 or in Chrome.

The curious thing is that this block: input:not(#move) works perfectly in both. I'm lost because the first block of code is supposed to work as far as I understand how these kind of selectors work.

Any ideas?

BoltClock
  • 700,868
  • 160
  • 1,392
  • 1,356
Des Grieux
  • 101
  • 1
  • 2
    You can't exclude an attribute by using [attribute selectors](http://www.w3.org/TR/selectors/#attribute-selectors) alone - using `!` to exclude an attribute value in CSS is invalid. If you *need* to exclude an ID you will have to include the [`:not()`](http://www.w3.org/TR/selectors/#negation) pseudo-class. – Adrift Jul 28 '13 at 02:56

1 Answers1

8

That is a non-standard attribute selector invented by jQuery. It's not part of the Selectors specification, so it won't work anywhere outside of jQuery (this includes things like document.querySelectorAll()).

Strictly speaking, the direct equivalent of jQuery's input[id!='move'] in standard selector syntax is input:not([id='move']), with an attribute selector. But since you're looking to match elements without a specific ID, input:not(#move) is fine.

BoltClock
  • 700,868
  • 160
  • 1,392
  • 1,356