Tabit.js 同一个页面上的多个实例与类名

Tabit.js multiple instances on same page with className

使用名为 tabit.js 的选项卡库。它可以使用 ID 和一个选项卡进行初始化,但我现在在一页上有多个选项卡,并且发现如果不为这两个选项卡都设置一个 ID 很难动态地完成这项工作。想过对每个做如下:

$('.tabs').each(function () {
  const element = $(this)
  const options = {
    buttonSelector: '[data-target]',
    buttonActiveClass: 'is-active',
    contentSelector: '[data-content]',
    buttonAttribute: 'data-target',
    contentAttribute: 'data-content',
    contentActiveClass: 'is-active',
  }
  if (element) {
    /* eslint-disable no-new */
    new Tabit(element, options)
  }
})

但 Tabit 暗示它没有通过输出找到元素初始化:

Uncaught TypeError: new Tabit requires a DOM element as its first argument.

在此处查看 JSFiddle:https://jsfiddle.net/e8y0d5um/7/

关于如何使这项工作有任何想法吗?发现很难在同一页面上找到没有唯一 ID 的多个选项卡的任何解决方案。

each 方法中的

this 指的是 DOM 元素。不需要用$()包起来。试试这个

$('.tabs').each(function () {
  const element = this
  const options = {
    buttonSelector: '[data-target]',
    buttonActiveClass: 'is-active',
    contentSelector: '[data-content]',
    buttonAttribute: 'data-target',
    contentAttribute: 'data-content',
    contentActiveClass: 'is-active',
  }
  if (element) {
    /* eslint-disable no-new */
    new Tabit(element, options)
  }
})