not should prefix media type (screen, print, all, etc) and not media feature (hover, point, etc).
Wrong:
@media not (hover: none)
Correct:
@media not all and (hover: none)
Yes, its unintuitive and weird. Source (see comments).
So you do not need javascript to alternate result of media query.