Combinador de hermanos general (~), no actualizando en los cambios de DOM, ¿trabajando según lo previsto?

Tuve una oportunidad en esta pregunta (esta pregunta no está relacionada en absoluto con su pregunta) y traté de resolverla aplicando selectores CSS dependiendo de si las casillas de verificación habían sido marcadas. La idea que tuve fue que, si hay un elemento que está :checked , el botón de envío anterior debe estar visible. El CSS resultante que surgió fue:

 input[type=checkbox]:checked ~ input[type=submit] { display:block; } 

Ahora, cuando se carga la página, el botón de envío está oculto, como debería. Pero, cuando marcas una casilla, no pasa nada (¿debería ser así?).

Si carga el formulario con un campo de entrada con atributo marcado, tiene el botón de envío visible, como debería, pero cuando lo desmarca, el botón de enviar no se oculta.

Cuando clona el formulario (con una casilla marcada) a través de Javascript (y el propósito de este ejercicio no fue usar Javascript), sí logra el resultado esperado, es decir, oculta el botón de enviar si no se marcaron casillas de verificación o muestra si se marcó una checkbox.

En otras palabras, esa regla CSS no tiene en cuenta los cambios en el dominio, pero sí lo tiene en cuenta cuando se colocan nuevos elementos. ¿Funciona así? Primero, he visto algo así con CSS.

Ejemplo: http://jsfiddle.net/niklasvh/nn4Qw/

¿Me perdí algo aquí o se supone que no funciona como he descrito?

Editado probado con Firefox, y funciona bien, por lo que parece ser un problema con google chrome. No probado con versiones posteriores de IE u Opera.

Su CSS parece correcto, pero el soporte del navegador, por supuesto, varía, y donde hay soporte, habrá errores. Javascript sería mucho más confiable.

Webkit tuvo problemas con los hermanos y los jarabes cuando se combinó con pseudoclases. Tuve algunos problemas con: hover, es posible que suceda lo mismo con: checked. Debería ser arreglado en construcciones de cromo nocturnas recientes. Si es así, este error terminará algún tiempo en la versión estable de Chrome.