Luncat ka eusi utama Luncat ka navigasi docs
in English

JavaScript

Hirupkeun Bootstrap sareng plugins JavaScript pilihan urang. Diajar ngeunaan unggal plugin, data kami sareng pilihan API programmatic, sareng seueur deui.

Individu atawa disusun

Plugins tiasa dilebetkeun masing-masing (nganggo individu Bootstrap js/dist/*.js), atanapi sadayana sakaligus nganggo bootstrap.jsatanapi anu diminified bootstrap.min.js(henteu kalebet duanana).

Upami anjeun nganggo bundler (Webpack, Rollup…), anjeun tiasa nganggo /js/dist/*.jsfile anu siap UMD.

Ngagunakeun Bootstrap salaku modul a

Urang nyadiakeun versi Bootstrap diwangun salaku ESM( bootstrap.esm.jsjeung bootstrap.esm.min.js) nu ngidinan Anjeun pikeun make Bootstrap salaku modul dina panyungsi anjeun, lamun panyungsi anjeun sasaran ngarojong eta .

<script type="module">
  import { Toast } from 'bootstrap.esm.min.js'

  Array.from(document.querySelectorAll('.toast'))
    .forEach(toastNode => new Toast(toastNode))
</script>

plugins sauyunan

Kusabab keterbatasan browser, sababaraha plugins kami, nyaéta Dropdown, Tooltip sareng Popover plugins, teu tiasa dianggo dina <script>tag sareng modulejinis sabab gumantung kana Popper. Kanggo inpo nu leuwih lengkep tentang masalah tingali di dieu .

Depéndensi

Sababaraha plugins sareng komponén CSS gumantung kana plugins séjén. Upami anjeun ngalebetkeun plugin masing-masing, pastikeun pikeun pariksa katergantungan ieu dina dokumén.

dropdowns kami, popovers na tooltips ogé gumantung kana Popper .

Masih hoyong nganggo jQuery? Ieu mungkin!

Bootstrap 5 dirancang pikeun dipaké tanpa jQuery, tapi masih mungkin ngagunakeun komponén urang jeung jQuery. Lamun Bootstrap ngadeteksi jQuerydina windowobyék éta bakal nambahan sakabéh komponén urang dina Sistim plugin jQuery urang; ieu hartina anjeun bakal bisa ngalakukeun $('[data-bs-toggle="tooltip"]').tooltip()pikeun ngaktipkeun tooltips. Sami lumaku pikeun komponén urang lianna.

Atribut data

Ampir kabéh plugins Bootstrap bisa diaktipkeun jeung ngonpigurasi ngaliwatan HTML nyalira kalayan atribut data (cara pikaresep urang ngagunakeun fungsionalitas JavaScript). Pastikeun ngan ukur nganggo hiji set atribut data dina hiji unsur (contona, anjeun moal tiasa memicu tooltip sareng modal tina tombol anu sami.)

Pamilih

Ayeuna pikeun naroskeun elemen DOM kami nganggo metode asli querySelectorsareng querySelectorAllalesan kinerja, janten anjeun kedah nganggo pamilih anu sah . Upami anjeun nganggo pamilih khusus, contona: collapse:Examplepastikeun kabur aranjeunna.

Kajadian

Bootstrap nyayogikeun acara khusus pikeun kalolobaan tindakan unik plugins. Sacara umum, ieu datangna dina bentuk participle infinitive jeung kaliwat - dimana infinitive (ex. show) dipicu dina mimiti hiji acara, sarta formulir participle kaliwat na (ex. shown) dipicu nalika parantosan hiji aksi.

Kabéh acara infinitive nyadiakeun preventDefault()fungsionalitas. Ieu nyadiakeun kamampuhan pikeun ngeureunkeun palaksanaan hiji aksi saméméh dimimitian. Balik palsu ti pawang acara ogé bakal otomatis nelepon preventDefault().

var myModal = document.getElementById('myModal')

myModal.addEventListener('show.bs.modal', function (event) {
  if (!data) {
    return event.preventDefault() // stops modal from being shown
  }
})

acara jQuery

Bootstrap bakal ngadeteksi jQuery upami jQueryaya dina windowobyék sareng teu aya data-bs-no-jqueryatribut anu dipasang dina <body>. Lamun jQuery kapanggih, Bootstrap bakal emit acara berkat sistem acara jQuery urang. Janten upami anjeun hoyong ngadangukeun acara Bootstrap, anjeun kedah nganggo metode jQuery ( .on, .one) tibatan addEventListener.

$('#myTab a').on('shown.bs.tab', function () {
  // do something...
})

Programmatic API

Sadaya konstruktor nampi pilihan obyék atanapi henteu nanaon (anu ngamimitian plugin kalayan paripolah standarna):

var myModalEl = document.getElementById('myModal')

var modal = new bootstrap.Modal(myModalEl) // initialized with defaults
var modal = new bootstrap.Modal(myModalEl, { keyboard: false }) // initialized with no keyboard

Upami anjeun hoyong kéngingkeun conto plugin khusus, unggal plugin ngungkabkeun getInstancemetodeu. Pikeun meunangkeun eta langsung ti unsur, ngalakukeun ieu: bootstrap.Popover.getInstance(myPopoverEl).

pamilih CSS di konstruktor

Anjeun oge bisa make pamilih CSS salaku argumen kahiji tinimbang unsur DOM pikeun initialize plugin nu. Ayeuna unsur pikeun plugin kapanggih ku querySelectormétode saprak plugins kami ngarojong hiji unsur tunggal.

var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')

Fungsi Asynchronous jeung transisi

Sadaya metodeu API programmatic henteu sinkron sareng uih deui ka panelepon saatos transisi dimimitian tapi sateuacan réngsé .

Pikeun ngaéksekusi tindakan saatos transisi parantos réngsé, anjeun tiasa ngadangukeun acara anu saluyu.

var myCollapseEl = document.getElementById('myCollapse')

myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
  // Action to execute once the collapsible area is expanded
})

Sajaba ti éta, panggero metoda dina komponén transisi bakal dipaliré .

var myCarouselEl = document.getElementById('myCarousel')
var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance

myCarouselEl.addEventListener('slid.bs.carousel', function (event) {
  carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})

carousel.to('1') // Will start sliding to the slide 1 and returns to the caller
carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!

Setélan standar

Anjeun tiasa ngarobih setélan standar pikeun plugin ku ngarobih Constructor.Defaultobyék plugin:

// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false

Henteu aya konflik (ngan upami anjeun nganggo jQuery)

Kadang-kadang perlu ngagunakeun plugins Bootstrap sareng kerangka UI anu sanés. Dina kaayaan ieu, tabrakan ngaranspasi kadang bisa lumangsung. Upami ieu kajantenan, anjeun tiasa nelepon .noConflictkana plugin anu anjeun hoyong balikkeun nilaina.

var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality

angka Vérsi

Versi masing-masing plugins Bootstrap tiasa diaksés ngalangkungan VERSIONhak milik konstruktor plugin. Contona, pikeun plugin tooltip:

bootstrap.Tooltip.VERSION // => "5.1.3"

Taya fallbacks husus nalika JavaScript ditumpurkeun

Plugin Bootstrap henteu mundur sacara khusus nalika JavaScript ditumpurkeun. Upami anjeun paduli kana pangalaman pangguna dina hal ieu, paké <noscript>pikeun ngajelaskeun kaayaan (sareng kumaha cara ngaktipkeun deui JavaScript) ka pangguna anjeun, sareng / atanapi tambahkeun fallbacks adat anjeun sorangan.

Perpustakaan pihak katilu

Bootstrap henteu sacara resmi ngadukung perpustakaan JavaScript pihak katilu sapertos Prototype atanapi jQuery UI. Sanaos .noConflictacara sareng namespaced, meureun aya masalah kasaluyuan anu anjeun kedah ngalereskeun nyalira.

Sanitizer

Tooltips sareng Popovers nganggo sanitizer anu diwangun pikeun ngabersihan pilihan anu nampi HTML.

Nilai standar allowListnyaéta kieu:

var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultAllowlist = {
  // Global attributes allowed on any supplied element below.
  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
  a: ['target', 'href', 'title', 'rel'],
  area: [],
  b: [],
  br: [],
  col: [],
  code: [],
  div: [],
  em: [],
  hr: [],
  h1: [],
  h2: [],
  h3: [],
  h4: [],
  h5: [],
  h6: [],
  i: [],
  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
  li: [],
  ol: [],
  p: [],
  pre: [],
  s: [],
  small: [],
  span: [],
  sub: [],
  sup: [],
  strong: [],
  u: [],
  ul: []
}

Upami anjeun hoyong nambihan nilai anyar kana standar ieu allowListanjeun tiasa ngalakukeun ieu:

var myDefaultAllowList = bootstrap.Tooltip.Default.allowList

// To allow table elements
myDefaultAllowList.table = []

// To allow td elements and data-bs-option attributes on td elements
myDefaultAllowList.td = ['data-bs-option']

// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultAllowList['*'].push(myCustomRegex)

Upami anjeun hoyong ngalangkungan sanitizer kami sabab anjeun langkung resep ngagunakeun perpustakaan khusus, contona DOMPurify , anjeun kedah ngalakukeun ieu:

var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
  sanitizeFn: function (content) {
    return DOMPurify.sanitize(content)
  }
})