伪造CSS:IE8中使用jQuery / JavaScript的only-child

我有一个菜单:only-child选择器,以便我可以指示子菜单。 :后选择器在IE8中工作(我必须支持的唯一旧的IE版本),但是:only-child选择器没有,所以我在每个菜单项上都有一个箭头,而不仅仅是带有子菜单的箭头。

.menu li > a:after { content: ' ▾'; } .menu li > a:only-child:after { content: ''; } 

我想要的是使用jQuery或JavaScript实现这一目标。 我不想使用Modernizr或Selectivizr以及所有这些东西,只需要一个代码作为独生子女的替代品。

如果你能帮助我,我真的很感激。 对于jQuery和JavaScript,我是新手,所以请详细解释。 谢谢!

jQuery为您实现了大多数CSS选择器 ,包括:only-child ,这使得使用较新的选择器很容易在旧浏览器中定位元素。 事实上,Selectivizr依赖于另一个JavaScript库,例如jQuery,以便直接将选择器实现到CSS中。

如果你可以使用jQuery,你可以简单地让jQuery处理:only-child选择器,为你唯一的子类分配一个你可以用你的CSS规则定位的类。 与Selectivizr不同,jQuery只允许您在脚本中使用选择器,而不是直接在样式表1中使用 ,因此您必须使用类名。

CSS:

 .menu li > a:after { content: ' ▾'; } .menu li > a.only-child:after { content: ''; } /* Notice the class selector */ 

JS:

 $('.menu li > a:only-child').addClass('only-child'); 

1 Selectivizr存在一个已知问题,它阻止您在选择器中组合伪类和伪元素,因此无论如何您都无法在这种情况下使用Selectivizr。

对于其他想知道这个问题并且没有让@ BoltClock的代码工作的同样问题,如果你将$更改$ jQuery ,它很可能会工作,如下所示:

 jQuery("SELECTOR").exampleMethod("EXAMPLESTRING");