javascript - 将类添加到与每个单击元素具有相同匹配类的元素

标签 javascript jquery html classname

我需要将 .active 类添加到与我单击的 div 匹配的任何类的任何按钮:

<button class="valueA"></button>
<button class="valueB"></button>
<button class="valueC valueB"></button>

<div class="DYNAMIC CLASS"></div>
$("div.valueB").on("click", function() {
    ...
});

结果应该是:

<button class="valueB active"></button>
<button class="valueC valueB active"></button>

我尝试使用.each(),但我对类的比较感到困惑。

问题是我的 div 和那些按钮一样具有动态类,所以我不知道什么匹配,直到它们位于 DOM 中。

最佳答案

一个版本是为文档中的每个类创建一个单击函数。这看起来像这样:

$('.valueA').click(function() {
  $('.valueA').addClass('active')
})
$('.valueB').click(function() {
  $('.valueB').addClass('active')
})
$('.valueC').click(function() {
  $('.valueC').addClass('active')
})

但是这是重复的代码,应该避免。因此,您可以创建一个函数,将单击处理程序添加到所有按钮(这是我编写的示例),然后检索附加到该元素的类。然后,它循环遍历类数组,并向具有该类的每个元素添加另一个元素。

$('button').click(function() {
    var classes = $(this).attr('class').split(' ')
  classes.forEach(function(elem) {

    $('.' + elem).addClass('active');
  })
})

现在,如果您想限制该类的应用,那么您可以在 之前添加该类应应用的元素类型。

$('button.' + elem).addClass('active');

$('div.' + elem).addClass('active');

关于javascript - 将类添加到与每个单击元素具有相同匹配类的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441371/

相关文章:

javascript - 单击按钮更新 CSS 类 - Reactjs

php - 从 url 抓取变量

javascript - Html导出Excel - 浏览器直接保存Excel,无法以 "View"模式打开,使用IE9

javascript - JS 下划线 : array of dicts in pairs

javascript - Firebase:用于推送通知的 Javascript SDK?

javascript - 如何在 Laravel 5.6 中使用 JQuery

javascript - 如何在 jquery 中向 $(window).resize 事件添加 if 条件?

javascript - Phonegap Cordova - 如何删除默认的启动屏幕?

javascript - 如何同时发送对象和使用 Passport 进行身份验证

javascript - Ace Editor - 在编辑器中添加超链接