JavaScript
Väck Bootstrap till liv med våra valfria JavaScript-plugins byggda på jQuery. Lär dig mer om varje plugin, våra data- och programmatiska API-alternativ och mer.
Individuell eller sammanställd
Plugins kan inkluderas individuellt (med Bootstraps individuella js/dist/*.js
), eller alla på en gång genom att använda bootstrap.js
eller minifierade bootstrap.min.js
(inkluderar inte båda).
Om du använder en bundler (Webpack, Rollup...) kan du använda /js/dist/*.js
filer som är UMD-klara.
Beroenden
Vissa plugins och CSS-komponenter är beroende av andra plugins. Om du inkluderar insticksprogram individuellt, se till att kontrollera dessa beroenden i dokumenten. Observera också att alla plugins är beroende av jQuery (det betyder att jQuery måste inkluderas före plugin-filerna). Konsultera vårpackage.json
för att se vilka versioner av jQuery som stöds.
Våra rullgardinsmenyer, popovers och verktygstips är också beroende av Popper.js .
Dataattribut
Nästan alla Bootstrap-plugins kan aktiveras och konfigureras enbart genom HTML med dataattribut (vårt föredragna sätt att använda JavaScript-funktionalitet). Se till att bara använda en uppsättning dataattribut på ett enda element (t.ex. kan du inte utlösa ett verktygstips och modal från samma knapp.)
I vissa situationer kan det dock vara önskvärt att inaktivera denna funktionalitet. För att inaktivera dataattributet API, koppla bort alla händelser i dokumentet med namnintervall med data-api
så här:
$(document).off('.data-api')
Alternativt, för att rikta in sig på ett specifikt plugin, inkludera bara pluginens namn som ett namnområde tillsammans med data-api-namnområdet så här:
$(document).off('.alert.data-api')
Väljare
För närvarande använder vi de ursprungliga metoderna för att fråga DOM-element querySelector
och querySelectorAll
av prestandaskäl, så du måste använda giltiga väljare . Om du till exempel använder speciella väljare: collapse:Example
se till att undvika dem.
evenemang
Bootstrap tillhandahåller anpassade händelser för de flesta plugins unika åtgärder. Generellt kommer dessa i en infinitiv och participform - där infinitiv (ex. show
) utlöses i början av en händelse, och dess participform (ex. shown
) utlöses vid fullbordandet av en handling.
Alla infinitiva händelser ger preventDefault()
funktionalitet. Detta ger möjlighet att stoppa utförandet av en åtgärd innan den startar. Att returnera falskt från en händelsehanterare kommer också att anropas automatiskt preventDefault()
.
$('#myModal').on('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
Programmatisk API
Vi tror också att du bör kunna använda alla Bootstrap-plugins enbart genom JavaScript API. Alla offentliga API:er är enkla, kedjabara metoder och returnerar den samling som åtgärdats.
$('.btn.danger').button('toggle').addClass('fat')
Alla metoder bör acceptera ett valfritt alternativobjekt, en sträng som riktar sig mot en viss metod, eller ingenting (som initierar en plugin med standardbeteende):
$('#myModal').modal() // initialized with defaults
$('#myModal').modal({ keyboard: false }) // initialized with no keyboard
$('#myModal').modal('show') // initializes and invokes show immediately
Varje plugin exponerar också sin råkonstruktör på en Constructor
egenskap: $.fn.popover.Constructor
. Om du vill skaffa en viss plugin-instans, hämta den direkt från ett element: $('[rel="popover"]').data('popover')
.
Asynkrona funktioner och övergångar
Alla programmatiska API-metoder är asynkrona och återgår till den som ringer när övergången har startat men innan den slutar .
För att utföra en åtgärd när övergången är klar kan du lyssna på motsvarande händelse.
$('#myCollapse').on('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
Dessutom kommer ett metodanrop på en övergångskomponent att ignoreras .
$('#myCarousel').on('slid.bs.carousel', function (event) {
$('#myCarousel').carousel('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})
$('#myCarousel').carousel('1') // Will start sliding to the slide 1 and returns to the caller
$('#myCarousel').carousel('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!
Standardinställningar
Du kan ändra standardinställningarna för en plugin genom att ändra pluginens Constructor.Default
objekt:
// changes default for the modal plugin's `keyboard` option to false
$.fn.modal.Constructor.Default.keyboard = false
Ingen konflikt
Ibland är det nödvändigt att använda Bootstrap-plugins med andra UI-ramverk. Under dessa omständigheter kan namnutrymmeskollisioner ibland inträffa. Om detta händer kan du anropa .noConflict
plugin-programmet du vill återställa värdet på.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
Versionsnummer
Versionen av var och en av Bootstraps jQuery-plugin-program kan nås via VERSION
egendomen hos plugin-konstruktören. Till exempel för verktygstipsplugin:
$.fn.tooltip.Constructor.VERSION // => "4.6.2"
Inga speciella fallbacks när JavaScript är inaktiverat
Bootstraps plugins faller inte tillbaka särskilt graciöst när JavaScript är inaktiverat. Om du bryr dig om användarupplevelsen i det här fallet, använd <noscript>
för att förklara situationen (och hur du återaktiverar JavaScript) för dina användare och/eller lägg till dina egna anpassade reservalternativ.
Tredjepartsbibliotek
Bootstrap stöder inte officiellt JavaScript-bibliotek från tredje part som Prototype eller jQuery UI. Trots .noConflict
och namnavgränsade händelser kan det finnas kompatibilitetsproblem som du måste åtgärda på egen hand.
Util
Alla Bootstraps JavaScript-filer är beroende av util.js
och det måste inkluderas tillsammans med de andra JavaScript-filerna. Om du använder det kompilerade (eller minifierade) bootstrap.js
behöver du inte inkludera detta – det finns redan där.
util.js
innehåller verktygsfunktioner och en grundläggande hjälpare för transitionEnd
evenemang samt en CSS-övergångsemulator. Det används av andra plugins för att söka efter CSS-övergångsstöd och för att fånga hängande övergångar.
Saneringsmedel
Tooltips och Popovers använder vår inbyggda desinficering för att sanera alternativ som accepterar HTML.
Standardvärdet whiteList
är följande:
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
// 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: []
}
Om du vill lägga till nya värden till denna standard whiteList
kan du göra följande:
var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList
// To allow table elements
myDefaultWhiteList.table = []
// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-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-]+/
myDefaultWhiteList['*'].push(myCustomRegex)
Om du vill kringgå vår desinficering för att du föredrar att använda ett dedikerat bibliotek, till exempel DOMPurify , bör du göra följande:
$('#yourTooltip').tooltip({
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})