動かざることバグの如し

近づきたいよ 君の理想に

Bootstrapで動的に追加された要素にもツールチップを表示する

環境

  • Bootstrap 4 /5

やりたいこと

動的に生成された要素にBootstrapのツールチップを適用したい。しかし、以下のコードではツールチップが正常に動作しない。

$('#mybutton').click(function() {
  $('#content').append('<a href="#" data-toggle="tooltip">hover me</a>');
});

このコードは、ボタンをクリックすると新たなリンク要素が生成され、そのリンク要素にツールチップが適用されることを期待している。しかし、実際には新たに生成された要素に対してツールチップが機能しない。

解決策

イベントの登録をbodyに対して行えばOK

Bootstrap4の場合

document.addEventListener('DOMContentLoaded', () => {
  $('body').tooltip({ selector: '[data-toggle="tooltip"]' });
});

Bootstrap5の場合

new bootstrap Tooltip("body", {
    selector: "[data-bs-toggle='tooltip']"
});

参考リンク