Javascript 许多选择器&;添加类

Javascript 许多选择器&;添加类,javascript,jquery,internet-explorer,jquery-selectors,Javascript,Jquery,Internet Explorer,Jquery Selectors,我使用jQuery处理IE7和IE8中不支持的选择器(主要是第n个孩子和最后一个孩子)。我已经读到,addClass比使用jQuery的css方法性能更好,所以我正在重构我的JS来实现这一点 将同一类添加到多个(有时是多个!)不同选择器的最佳方法是什么?将它们都放在同一个语句中,并在列表末尾使用addClass是否安全 例如: $('.selector1:nth-child(3), .diff-selector2:last-child, #another-selector:nth-c

我使用jQuery处理IE7和IE8中不支持的选择器(主要是第n个孩子和最后一个孩子)。我已经读到,
addClass
比使用jQuery的
css
方法性能更好,所以我正在重构我的JS来实现这一点

将同一类添加到多个(有时是多个!)不同选择器的最佳方法是什么?将它们都放在同一个语句中,并在列表末尾使用addClass是否安全

例如:

$('.selector1:nth-child(3),
   .diff-selector2:last-child,
   #another-selector:nth-child(2),
   tr.highlighted td:last-child,
   h2.job-title:last-child').addClass('fallback-class');
选择器列表是否有一个变慢的限制或点?我应该为这些选择器列表创建变量吗?有更好的方法吗

最后一点:不幸的是,使用Selectivizr使IE7陷入停顿。这就是我决定使用上述方法的原因。

我想到了两种方法

1) 您可以为元素设置一个公共类,并将它们添加到一个类中

<p class="addThis">1</p>
<p>2</p>
<span class="addThis">3</span>
<a>4</a>
<p>5</p>
<a class="addThis">6</a>

$('.addThis').addClass('fallback-class'); //1,3,6 will be added classes

1

二,

3. 4. 五,

6. $('.addThis').addClass('fallback-class')//1,3,6将被添加到类中
2) 你可以使用父/子方法

<p>
    <a>1</a>
    <span>2</span><!-- wont be added class -->
</p>
<p>
    <a>3</a>
</p>
<a>3</a><!-- wont be added class -->
<p>4</p><!-- wont be added class -->

$('p').children('a').addClass('fallback-class');
//this will adds class which got "a" selector inside "p"

$('a').parent('p').addClass('fallback-class');
//this will adds class "p" selector which got children "a"

1.
2.

3.

3. 四,

$('p')。children('a')。addClass('fallback-class'); //这将添加在“p”中具有“a”选择器的类 $('a').parent('p').addClass('fallback-class'); //这将添加类“p”选择器,其中包含子级“a”
我认为添加一个公共类来教授所讨论的控件不是一个选项?只需重构html,这样您就不需要使用那些速度非常慢的选择器。在没有缓存的情况下,对于第n个子元素检查的每个元素,该元素的父元素的所有子元素都需要遍历。不幸的是,在这种情况下,我实际上没有访问HTML的权限,而在这种情况下,它是由CMS(Drupal)控制的。在你的问题中添加html,然后让我们看看我是否可以不发布html,因为这些页面太大了&这个网站还没有上线。我并不想对我的回答感到刺耳,我只是不想发布实际的HTML,键入一堆假的HTML可能不会有多大帮助。根据您的第一个回答,Esailija,您建议我首先尝试通过ID或第n个子元素的父元素进行选择,然后使用类似于
过滤器
查找
的内容,并将这些选择器缓存在变量中?