jquery删除匹配的类?

Ste*_*ven 3 javascript jquery

我有一个类似东西的清单

                    <ul>
                        <li>
                            <div class="pack1 active1"><span>$3.99</span></div>
                        </li>
                        <li>
                            <div class="pack2"><span>$5.99</span></div>
                        </li>
                        <li>
                            <div class="pack3 active3"><div id="ribbon"><span>40</span></div><span>$6.99</span></div>
                        </li>
                        <li>
                            <div class="pack4"><span>$10.99</span></div>
                        </li>
                        <li>
                            <div class="pack5"><span>$259.99</span></div>
                        </li>
                    </ul>
Run Code Online (Sandbox Code Playgroud)

我想在点击时删除所有活动的*类.我试图做一些类似$('*[class^="active"]').removeClass()但不起作用的事情

有帮助吗?

Mat*_*zak 8

好的,我测试了它,即使有一个以上的"active-something"类分配给一个元素,这肯定有效:

$('[class*="active"]').removeClass(function(i, c) {
  return c.match(/active\d+/g).join(" ");
});
Run Code Online (Sandbox Code Playgroud)

'i'是匹配元素的索引,'c'是匹配元素的class属性的值,因此您不需要再次"询问"它.$(""").removeClass()可以删除值指定的所有类,因此如果有多个"active-something"类分配给此元素,我们将返回从调用到匹配的所有类(使用正则表达式末尾的'g'选项)然后连接它,以便实际的removeClass函数可以相应地处理它.

  • +1 - 但是,如果在可能有或没有指定类的元素集合上运行此函数,`match`将返回`null`,当您尝试运行`join`方法时会导致语法错误.显然选择带有'$('[class*="active"]')'的元素否定了这个问题,但如果你正在处理一些其他标准选择的元素集合,你需要检查元素是否有一个期望的类或将`match`的`null`输出转换为空数组. (2认同)