javascript - 使用 webpack 配置 jquery 插件

标签 javascript jquery jquery-plugins webpack bootstrap-multiselect

我正在尝试配置 jquery 插件 multiselect使用 webpack。

但是我得到了

$(...).multiSelect is not a function

我已将其包含在别名中

alias: {
            'multiSelect': Path.join(__dirname, '../public/plugins/jquery-multi-select/js/jquery.multi-select.js')
          }

webpack.config.js

var Path = require('path')
var ProvidePlugin = require('webpack/lib/ProvidePlugin')

module.exports = {
    module: {
        loaders: [
                { test: /bootstrap\/js\//, loader: 'imports?jQuery=jquery' }
            ]
    },
    resolve: {
      alias: {
        'multiSelect': Path.join(__dirname, '../public/plugins/jquery-multi-select/js/jquery.multi-select.js')
      }
    },
    entry: Path.join(__dirname, '../public/Entry.js'),
    output: {
        path: Path.join(__dirname, '../public'),
        filename: 'bundle.js'
    },
    plugins: [
        new ProvidePlugin({
            jQuery: 'jquery',
            $: 'jquery',
            jquery: 'jquery'
        })
    ],
}

Entry.js

var multiSelect = require('multiSelect')
$('#my-select').multiSelect() // $(...).multiSelect is not a function

最佳答案

多选插件使用 IIFE:

!function ($) {
   ...
}(window.jQuery);

所以你可以尝试像这样更改你的 Entry.js 文件:

window.jQuery = jquery;
var multiSelect = require('multiSelect');
$('#my-select').multiSelect();

或者您可以更改您的webpack.config.js:

new ProvidePlugin({
  jQuery: 'jquery',
  $: 'jquery',
  jquery: 'jquery',
  'window.jQuery': 'jquery'
})

关于javascript - 使用 webpack 配置 jquery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477182/

相关文章:

javascript - 当通过 Rails urlhelper 生成的链接访问页面时,Google map 不会显示

jquery - 分发 jQuery 插件 - 需要哪些文件?

jquery-plugins - 选择插件max_selected_options

jquery - 修复了 facebook/wibiya 等带有 jquery/YUI/prototype 的 Bar

javascript - 如何检测 Firefox 中的浏览器关闭事件?

javascript - 将功能应用于所有按钮?

javascript - gmaps.js 返回 getRoutes 的旧值

jquery - Div 相互重叠

javascript - 在 Google Chrome 中调试 CSP 违规

javascript - 播放彩信://streams on my site