Performance: Tooltip and popover initialization
This affects page interactivity speed and responsiveness when tooltips or popovers appear on user actions.
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); const tooltipList = tooltipTriggerList.map(el => new bootstrap.Tooltip(el, { trigger: 'hover focus' }));
document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(el => new bootstrap.Tooltip(el));| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Eager initialization on all elements | High (many queries and listeners) | Multiple reflows per tooltip/popover | High paint cost on show/hide | [X] Bad |
| Batch initialization with controlled triggers | Moderate (single query, fewer listeners) | Single reflow per interaction | Moderate paint cost | [!] OK |
| Lazy initialization on interaction | Low (only on demand) | Minimal reflows | Low paint cost | [OK] Good |
data-bs-toggle="tooltip" to an HTML element in Bootstrap?data-bs-toggledata-bs-toggle="tooltip" tells Bootstrap this element should show a tooltip when hovered or focused.data-bs-toggle="tooltip" and creating new bootstrap.Tooltip instances for each.<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Hello!">Click me</button>
<script>
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl);
});
</script>data-bs-toggle="popover" and data-bs-content="Hello!". The JS initializes popovers on all such elements.<button data-bs-toggle="tooltip" title="Tooltip text">Hover me</button>
<script>
var tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
var tooltipList = tooltipTriggerList.map(function (el) {
return new bootstrap.Tooltip(el);
});
</script>Pass the test and this pattern moves unknown