Laravel 'popper.js is null' 当单击具有类'input-group-prepend'的引导程序 4 div 时

Posted

技术标签:

【中文标题】Laravel \'popper.js is null\' 当单击具有类\'input-group-prepend\'的引导程序 4 div 时【英文标题】:Laravel 'popper.js is null' when clicking on a bootstrap 4 div with class 'input-group-prepend'Laravel 'popper.js is null' 当单击具有类'input-group-prepend'的引导程序 4 div 时 【发布时间】:2020-04-13 16:17:28 【问题描述】:

当我单击由类 input-group-prepend 的 div 包围的元素时,我在控制台中收到以下错误:

TypeError: popper is null app.js:50778:3

如果我删除周围的 div,点击功能可以工作,但出于 UI 原因我需要 div。

元素

...
<div class="input-group-prepend">
   <button class="btn btn-outline-secondary dropdown-toggle"
           type="button" data-toggle="dropdown"
           aria-haspopup="true" aria-expanded="false">Filter
   </button>
</div>
...

jquery点击功能

...
$(".dropdown-item-container").click(function(event) 
  event.stopPropagation();
  console.log($(this));
);
...

我的猜测是我没有正确地将popper.js 包含在boostrap.js 中。

我的bootstrap.js 文件:

...
try 
    window.Popper = require('popper.js').default;
    window.$ = window.jQuery = require('jquery');

    require('bootstrap');
 catch (e) 
...

我尝试了此处描述的一些看似相关的解决方案,但我无法让它们发挥作用:Can't load popper.js with webpack and Laravel mix。

我用:

Laravel 版本:6.7.0 Popper.js 版本:^1.16.0 Bootstrap 版本:^4.0.0

【问题讨论】:

【参考方案1】:

我发现了一个奇怪但很容易解决的问题。出于某种原因,当我将data-toggle="dropdown" 放在周围的div 而不是button 上时,下拉菜单有效,但我没有收到错误。

...
<div class="input-group-prepend" data-toggle="dropdown">
   <button class="btn btn-outline-secondary dropdown-toggle"
           type="button"
           aria-haspopup="true" aria-expanded="false">Filter
    </button>
</div>
...

我不知道为什么会这样,也不是Bootstrap 文档规定的创建下拉菜单的方式,但它仍然有效。

【讨论】:

【参考方案2】:

默认情况下,div.dropdown-menu 应该是 button[data-toggle="dropdown"] 的兄弟。也许这就是问题所在。

如果您不想更改 html 结构,则必须在下拉选项中定义 reference 设置(例如 data-reference="parent")。见https://getbootstrap.com/docs/4.4/components/dropdowns/#options

【讨论】:

以上是关于Laravel 'popper.js is null' 当单击具有类'input-group-prepend'的引导程序 4 div 时的主要内容,如果未能解决你的问题,请参考以下文章

如何导入 popper.js?

bootstrap4popper.js报错Uncaught ReferenceError

Bootstrap 4 Beta 使用 Webpack 3.x 导入 Popper.js 抛出 Popper 不是构造函数

Bootstrap dropdown require Popper.js

Uncaught TypeError: Bootstrap dropdown require Popper.js (https://popper.js.org)(下拉菜单)

如何给popper.js popper-box边距/填充,使其不会粘在窗口边框上