4

我正在使用 jQuery 来处理 IE7 和 8 中不受支持的选择器(主要是:nth-child:last-child)。我读过它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 停止运行。这就是为什么我决定使用上述方法。

4

1 回答 1

2

我想到了两种方法

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

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"
于 2012-06-20T11:12:16.773 回答