javascript - 如何使用 javascript 保存类列表以便稍后将它们与其他类进行比较?

标签 javascript

我有一系列多边形:

<svg>
   <path class="_1600 _1500 _1400 leaflet"></path>
   <path class="_1300 _1700 _1900 leaflet"></path>
   <path class="_1600 _1400 _1800 leaflet"></path>
</svg>

和按钮:

<button class="_1600 _1500"></button>
<button class="_1600 _1300 _1200"></button>
<button class="_1300 _1200 _1700 _1800"></button>    
<button class="_1300 _1200 _1100 _1900"></button>

我需要在单击时为其分配一个类,这就是我的做法并且工作正常:

点击时:

    this.getElement().classList.add("active");

现在多边形变成:

<svg>
   <path class="_1600 _1500 _1400 leaflet"></path>
   <path class="active _1300 _1700 _1900 leaflet"></path>
   <path class="_1600 _1400 _1800 leaflet"></path>
</svg>

如何保存被单击元素的类列表(单击后我还向其中添加了 .active)? 我想保存它们,以便稍后可以将此列表与另一个类列表进行比较,如果有任何匹配,则将 .active 类附加到匹配元素。

我必须使用:

function onEachFeature(feature, layer) {
    layer.on({
        click: panelShow
    });
}

function panelShow(e) {
    $("path").removeClass("active");
    this.getElement().classList.add('active');
}

最佳答案

您可以使用className获取包含所有类的空格分隔字符串。

this.getElement().className;

如果您想要一些更奇特的东西,例如静态 classList 副本,您始终可以创建一个虚拟元素:

function staticClassListCopy(element) {
  var dummy = document.createElement('div');
  dummy.className = element.className; // import classes
  return dummy.classList;
}

该对象将是一个类似数组的对象,因此您可以轻松地迭代它以进行所需的比较。

关于javascript - 如何使用 javascript 保存类列表以便稍后将它们与其他类进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443286/

相关文章:

javascript - 如何下载从 papaparse 生成的 csv?

javascript - 在循环中等待嵌套的 Promise

javascript - 使用 javascript 去除不允许选择的字符?

javascript - 火狐 68 : local files now treated as cross-origin; is there a way to override?

javascript - 当用户尝试滚动时禁用滚动但仍然跟踪

javascript - 如何从 Google map 数据层中删除数据?

javascript - 需要从javascript中的2个数组中获取

javascript - 如何将相同的 Jquery 应用于随着时间的推移通过 CMS 添加的具有唯一 ID 的元素?

javascript - 从选项 html 标记中检索值并传递给另一个 servlet

javascript - 在 Gmail 或 Facebook 等网站上使用 jQuery