我试图弄清楚为什么我的Bootstrap 5模态事件似乎只在我使用纯JavaScript时触发(例如addEventListener show.bs.modal),但是当我在jQuery中尝试相同的事情时,事件却没有触发。
var myModal = document.getElementById('detailModal')
myModal.addEventListener('show.bs.modal', function (event) {
alert("I show correctly when the Modal opens!")
})
$('#detailModal').on('show.bs.modal', function (event) {
alert('I do not show...');
})
// Also does not work...
$('#detailModal').modal('show');
这可能是因为我使用Webpack来包含Bootstrap/jQuery库(我完全是Webpack初学者)。Webpack配置文件如下...
const path = require('path')
const webpack = require('webpack');
module.exports = {
entry: {
site: './JsSrc/main.js',
reporttemplate: './JsSrc/ReportTemplateDetails.js'
},
output: {
filename: '[name]compiled.js',
path: path.resolve(__dirname, 'wwwroot','js')
},
mode: 'development',
devtool: 'source-map',
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(eot|woff(2)?|ttf|otf|svg)$/i,
type: 'asset'
}
]
},
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
}
因为使用纯JavaScript引用可以工作,所以我可以继续这样做,但是我担心它不能使用jQuery,这可能表明我做错了其他事情(Webpack的配置或其他)。
1条答案
按热度按时间idfiyjo81#
我在 * How do I load the Bootstrap 5 jQuery plugins in an ES6 project using Webpack? * 中找到了答案。
事实证明Bootstrap 5会检查jQuery是否存在于window对象中(详细信息见 * 是否仍要使用jQuery?这是可能的!*),因此在我的Webpack入口JavaScript文件中,我添加了以下内容。
嘿,现在它可以工作了!也许有更好的方法来做这件事,而使用Webpack,但这至少解释了为什么它最初不工作,并使它工作“足够好”现在...