jquery - 如何删除同一元素上的重复类

标签 jquery duplicates removeclass

如何使用 JQuery 删除同一元素上的重复类?

示例:

<a href="#" class="foo foo">link</a>

我只想在这个元素中包含一个类,如下所示:

<a href="#" class="foo">link</a>

我已经尝试过了,但是没有成功。谢谢

最佳答案

您可以使用 removeClass() 删除现有的类并使用 addClass() 添加一个回来如下:

$("a").removeClass("foo").addClass("foo");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="foo foo">link</a>

<小时/>

更新(根据评论)

您可以扩展 jQuery 函数命名空间,如下所示,以获得更通用的解决方案,该解决方案迭代 jquery 对象并消除任何重复的类名:

(function($) {
  $.fn.removeDuplicateClass = function(className) {
    return this.removeClass(className).addClass(className);
  };
  $.fn.removeDuplicateClasses = function () {
    this.each(function (i, element) {
        var arr = [],
        classList = $(element).attr("class").split(" ");
        $.each(classList, function (i, item) {
            if (arr.indexOf(item) < 0) {
                arr.push(item);
              }
        });
        $(this).attr("class", arr.join(" "));
    });
    return this;
  };
})(jQuery);

$("a").removeDuplicateClasses(); // or $("a").removeDuplicateClass("foo");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <a href="#" class="foo foo">foo dup</a>
  </li>
  <li>
    <a href="#" class="bar foo bar">bar dup</a>
  </li>
</ul>

关于jquery - 如何删除同一元素上的重复类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165983/

相关文章:

javascript - AngularJS - HTTP 请求在 Controller 中发出预检请求但不在 app.js 中

javascript - 在一系列 float : left divs 中创建/删除一行

sql-server - T-SQL:我可以在一个 View 中查询值,然后在第二个 View 中仅查询第一个 View 中不存在的值吗?

jQuery:使用remove();对于 <tr> 行

javascript - 如果输入为空则添加类,如果不为空则删除它

javascript - 如何从javascript数组中选择特定字段

jquery - 根据相同的类名更改多个 div 内容?

python - 如何避免在 SQLAlchemy - python 的多对多关系表中添加重复项?

sql - DB2 和 SQL-如何返回特定字段中的最大值,以便每行只显示一条记录;从多个表中提取数据

jQuery:removeClass 中的通配符类选择器