精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

JavaScript

用我們在jQuery上建置JavaScript插件將Bootstrap生動起來。了解每個插件、數據和API以及更多的選項。

單個插件或集成包

每個插件都可以被單獨引入(使用對應每個 Bootstrap 插件的 js/dist/*.js 文件),也可以通過 bootstrap.js 或壓縮版的 bootstrap.min.js 文件一次性引入所有插件(選一個即可,不要同時使用)。

如果使用打包程序(Webpack、Rollup 等),你可以使用支持 UMD 格式的 /js/dist/*.js 文件。

將 Bootstrap 作為模塊使用

我們為 Bootstrap 提供了一個 ESM 模塊(bootstrap.esm.jsbootstrap.esm.min.js)的版本,如果你的目標瀏覽器支持的話,你可以在瀏覽器中將 Bootstrap 作為模塊使用。

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

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

不兼容的插件

由于瀏覽器的限制,某些插件,例如下拉菜單(Dropdown)、工具提示(Tooltip)和彈出框(Popover)插件,不能通過設置為 module 類型的 <script> 標簽使用,由于它們都依賴 Popper。有關此問題的更多信息,請見 這里

依賴項

某些插件和 CSS 組件依賴于其它插件。如果你選擇單獨引入某個插件,請確保在文檔中檢查其是否存在依賴其它插件的情況。

下拉菜單(dropdown)、彈出框(popover)和工具提示(tooltip)組件依賴 Popper。

仍然需要用到jQuery 嗎?有可能!

Bootstrap 5 被設計為不依賴 jQuery,但你仍可以將 Bootstrap 的組件與 jQuery 一起使用。如果 Bootstrap 在 window 對象上檢測到了 jQuery,它將把所有的 Bootstrap 插件添加到 jQuery 的插件系統中。也就意味著你將來能夠通過 $('[data-bs-toggle="tooltip"]').tooltip()來調用工具提示組件(tooltip)。同理,其它組件也類似。

data 屬性

幾乎所有的 Bootstrap 插件都可以通過帶有 data 屬性的 HTML 元素單獨開啟和配置(我們推薦 JavaScript API 為首選方式)。請確保 僅在單個 HTML 元素上使用一組 data 屬性 (例如,你不能通過同一按鈕觸發工具提示和模態框。)

選擇器

Currently to query DOM elements we use the native methods querySelector and querySelectorAll for performance reasons, so you have to use valid selectors. If you use special selectors, for example: collapse:Example be sure to escape them. 目前,由于性能的原因,我們使用原生方法 querySelectorquerySelectorAll 來查詢 DOM 元素,因此你必須使用 合法的選擇器。 如果使用特殊的選擇器,例如collapse:Example ,請確保對其進行轉義。

事件

Bootstrap 為大多數插件的獨特行為提供了自定義事件。通常,事件的命名以不定式或過去分詞形式出現,例如,在事件開始時觸發的事件名時不定式形式的(例如 show),在事件完成時觸發的事件名是過去分詞形式的(例如 shown)。

所有不定式形式命名的事件都提供 preventDefault() 功能。這就賦予了你在動作開始之前將其停止的能力。如果事件處理函數的返回值是 false,將自動調用 preventDefault()。

var myModal = document.getElementById('myModal')

myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // 停止即將展示的模態框(modal)
  }
})

jQuery 事件

如果 jQuery 存在于 window 對象上,并且jQuery 元素上沒有設置 data-bs-no-jquery 屬性,Bootstrap 將認為 jQuery 存在。如果檢測到了 jQuery,Bootstrap 將基于 jQuery 的事件系統觸發相應的事件。因此,如果你想監聽 Bootstrap 的事件,就必須使用 jQuery 的方法(例如 .on, .one)而不能使用 addEventListener。

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

編程式 API

所有構造函數都可以接受對象類型的參數或沒有參數(將以默認行為初始化插件):

var myModalEl = document.getElementById('myModal')

var modal = new bootstrap.Modal(myModalEl) //  以默認值初始化
var modal = new bootstrap.Modal(myModalEl, { keyboard: false }) //  以對象參數初始化

如果你想獲取某個插件的特定實例,可以調用每個插件都暴露出來的 getInstance 方法。為了直接從元素中獲取插件的實例對象,請執行以下操作:bootstrap.Popover.getInstance(myPopoverEl)。

構造函數中的CSS選擇器

您還可以使用CSS選擇器作為第一個參數,而不是DOM元素來初始化插件。目前,該插件的元素是通過querySelector方法找到的,因為我們的插件只支持單個元素。

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

異步編程和轉換

所有編程形式的 API 方法都是 異步的,并在 transition 開始之后、結束之前返回到調用者。 。

為了在 transition 完成后執行某個動作,你可以監聽相應的事件。

var myCollapseEl = document.getElementById('#myCollapse')

myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// 可折疊區域被展開時,此處的動作將被執行一次
})

另外,對正在 transitioning 狀態的組件調用的任何方法都將被忽略

var myCarouselEl = document.getElementById('myCarousel')
var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // 獲取輪播(Carousel)組件的實例

myCarouselEl.addEventListener('slid.bs.carousel', function (event) {
carousel.to('2') //  當滑動到幻燈片 1 之后,將立即滑動到幻燈片 2
})

carousel.to('1') // 開始滑動到幻燈片 1 并返回到回調者
carousel.to('2') // !! 將會被忽略,因為滑動到幻燈片 1 的轉換動作還未完成 !!

默認設置

你可以通過修改插件的 Constructor.Default 對象來更改插件的默認設置:

// 將模態框(modal)插件的 `keyboard` 的默認值修改為 false
bootstrap.Modal.Default.keyboard = false

避免沖突(僅對你使用 jQuery)

有些時候需要將 Bootstrap 插件與其它 UI 框架一起使用。在這種情況下,難免發生命名空間的沖突。如果發生這種情況,你可以在需要還原的插件上調用 ..noConflict 函數。

var bootstrapButton = $.fn.button.noConflict() // 重置 $.fn.button 為先前的值
$.fn.bootstrapBtn = bootstrapButton // 為 $().bootstrapBtn 賦予 Bootstrap 的功能

版本號

每個 Bootstrap 插件都可以通過其構造函數上的 VERSION 屬性進行訪問。例如,以工具提示(tooltip)插件為例:

bootstrap.Tooltip.VERSION // => "5.0.0-beta3"

JavaScript被禁用無反饋

當禁用JavaScript時,Bootstrap的插件不會有特別回饋。若你擔心此等情況中的使用者體驗,使用<noscript>以向你的用戶解釋此情形(以及如何重啟JavaScript的方式)和/或添加你自己定義的回饋。

第三方工具庫

Bootstrap 不對第三方工具庫提供支持,例如 Prototype 或 jQuery UI。盡管存在 .noConflict 和基于命名空間的事件,但仍可能需要您自行解決兼容性問題。

清理工具

工具提示(tooltip)和彈出框(popover)可以接受 HTML 代碼作為參數,但會使用 Bootstrap 內置的清理程序對 HTML 代碼進行清理。

The default allowList value is the following: allowList 的默認值如下所示:

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: []
}

如果要向 allowList 添加新值,則可以執行如下操作:

var myDefaultAllowList = bootstrap.Tooltip.Default.allowList

// 添加 table 元素
myDefaultAllowList.table = []

// 添加 td 元素以及 td 元素的 data-bs-option 屬性
myDefaultAllowList.td = ['data-bs-option']

// 你可以添加自定義的正則表達式來對屬性進行校驗。
// 請提防過于寬松的正則表達式
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultAllowList['*'].push(myCustomRegex)

如果你因為喜歡使用專用的工具庫(例如 DOMPurify)并想繞過 Bootstrap 的清理程序,則可以這樣操作:

var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})
返回頂部
精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

      9000px;">

          一本久久a久久免费精品不卡| 丝袜a∨在线一区二区三区不卡| 国产午夜精品一区二区三区视频| 成人性色生活片免费看爆迷你毛片| 中国色在线观看另类| 精品三级av在线| 亚洲精品一区二区在线观看| 欧美日韩高清不卡| 久久久久久久久久久99999| 久久久久国产精品麻豆ai换脸| 8v天堂国产在线一区二区| 日韩一级在线观看| 成人高清在线视频| 在线精品视频一区二区三四| 欧美在线综合视频| 欧美视频日韩视频在线观看| 欧洲一区二区av| 欧美一区在线视频| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩亚洲电影在线| 国产精品不卡一区| 狠狠色综合日日| 欧美在线免费播放| 欧美一区二区久久| 国产精品传媒入口麻豆| 亚洲一区二区三区美女| 99精品视频中文字幕| 久久蜜桃av一区精品变态类天堂| 精品国产伦一区二区三区观看方式| 2020国产精品自拍| 国产成人丝袜美腿| 中文字幕中文在线不卡住| 国产精品一区二区x88av| 3d成人动漫网站| 午夜精品视频一区| 日韩一级高清毛片| 国产一区啦啦啦在线观看| 欧美xxxxx牲另类人与| 狠狠色狠狠色综合日日91app| 久久色在线视频| 性感美女久久精品| 欧美日韩国产美| 国产麻豆视频一区| 最好看的中文字幕久久| 国产精品福利电影一区二区三区四区| 欧美日本视频在线| 久久久久青草大香线综合精品| 日韩一卡二卡三卡国产欧美| 日韩精品一区二区三区视频播放 | 一区二区三区欧美激情| 日韩欧美久久久| 欧美zozo另类异族| 1000精品久久久久久久久| 久久综合狠狠综合久久综合88| 精品日韩一区二区| 久久久久99精品国产片| 久久综合久久综合九色| 国产精品白丝在线| 午夜久久久影院| 另类小说欧美激情| 欧美亚洲高清一区| 国产亚洲1区2区3区| 亚洲福利视频导航| 国产suv精品一区二区三区| 欧美这里有精品| 亚洲色图色小说| 狠狠色丁香婷综合久久| 日韩午夜激情免费电影| 亚洲综合在线电影| 96av麻豆蜜桃一区二区| 久久久美女毛片| 极品少妇一区二区| 久久综合色婷婷| av网站免费线看精品| 国产人妖乱国产精品人妖| 蜜臀精品一区二区三区在线观看 | 麻豆精品蜜桃视频网站| 一本大道久久a久久综合| 国产精品色婷婷久久58| 国产精品影音先锋| 国产精品麻豆一区二区| 不卡av在线免费观看| 国产精品第五页| 99riav久久精品riav| 亚洲国产毛片aaaaa无费看| 欧美一区二区三区成人| 国产99精品在线观看| 亚洲图片欧美激情| 欧美主播一区二区三区美女| 亚洲一区二区不卡免费| 日韩一级视频免费观看在线| 韩日av一区二区| 久久精品在线免费观看| 国v精品久久久网| 欧美一区二区三区视频免费播放| 另类专区欧美蜜桃臀第一页| 欧美日本乱大交xxxxx| 国产福利91精品| 一区二区三区电影在线播| 欧美一级高清片| 色综合激情五月| 精品一区二区三区在线视频| 一区二区三区四区不卡在线 | 久久久精品蜜桃| 成人福利视频在线| 裸体一区二区三区| 中文字幕一区视频| 久久综合色婷婷| 欧美日韩精品欧美日韩精品| 国产精品自拍av| 亚洲尤物视频在线| 国产精品久久二区二区| 欧美成人一区二区三区片免费| 丁香婷婷综合激情五月色| 激情亚洲综合在线| 国产成人免费xxxxxxxx| 久久er99热精品一区二区| 日韩国产精品久久久久久亚洲| 亚洲欧美日韩国产成人精品影院| 欧美国产视频在线| 亚洲视频在线一区观看| 亚洲视频你懂的| 亚洲第一狼人社区| 亚洲gay无套男同| 欧美96一区二区免费视频| 精久久久久久久久久久| 国产伦精品一区二区三区视频青涩| 国产精品亚洲午夜一区二区三区| 96av麻豆蜜桃一区二区| 欧美日本在线一区| 国产喂奶挤奶一区二区三区| 亚洲一区二区三区四区五区中文| 亚洲自拍偷拍综合| 国产精品一区二区x88av| 精品视频色一区| 欧美三级日本三级少妇99| 久久国产精品72免费观看| 成年人网站91| 欧美卡1卡2卡| 亚洲久本草在线中文字幕| 免费观看在线综合色| 国产成人丝袜美腿| 91麻豆精品国产91久久久久| 中文字幕高清不卡| 精品无码三级在线观看视频| 欧洲精品视频在线观看| 国产精品色哟哟| 国产高清久久久| 日韩一卡二卡三卡国产欧美| 一区二区三区资源| 99精品桃花视频在线观看| 欧美肥妇bbw| 亚洲精品视频在线观看网站| 国精产品一区一区三区mba视频| av日韩在线网站| 久久久久久久久久久久久夜| 亚洲第一福利视频在线| 国产精品一区二区三区网站| 欧美一级艳片视频免费观看| 日韩高清不卡一区二区| 91精品国产综合久久精品麻豆| 亚洲精品国产a久久久久久| 无吗不卡中文字幕| 精品国产乱码久久久久久牛牛 | 欧美高清hd18日本| 亚洲成人一区二区在线观看| 欧美男男青年gay1069videost| 首页欧美精品中文字幕| 欧美视频中文一区二区三区在线观看 | 久久激情五月激情| 欧美一级高清大全免费观看| 成人黄色一级视频| 亚洲精品乱码久久久久久久久 | 午夜视频在线观看一区| 欧美精选午夜久久久乱码6080| 午夜久久电影网| 欧美激情一区二区| 26uuu久久综合| 看电视剧不卡顿的网站| 亚洲一区二区三区四区不卡| 久久久久久夜精品精品免费| 91麻豆精品在线观看| 国产美女娇喘av呻吟久久| 蜜桃视频一区二区三区在线观看| 亚洲影院理伦片| 91丝袜呻吟高潮美腿白嫩在线观看| 精品系列免费在线观看| 蜜桃视频在线一区| 日韩av在线发布| 久久精品综合网| 精品久久国产老人久久综合| 欧美人妇做爰xxxⅹ性高电影 | 欧美精品一区二区在线观看| 91影院在线免费观看| 国内偷窥港台综合视频在线播放| 日本免费新一区视频| 亚洲欧洲av在线| 亚洲第一二三四区| 亚洲国产综合91精品麻豆| 五月婷婷综合网|