jquery Uncaught TypeError:Illegal invocation:selector-engine.js:41

x7rlezfr  于 2024-01-07  发布在  jQuery
关注(0)|答案(1)|浏览(180)

我最近升级了我的ASP.NETMVC应用程序到最新的bootstrap和jQuery版本。
错误截图:
https://i.stack.imgur.com/coAjF.png
模态甚至不加载。
这是我使用的代码:

  1. <a id="btnOpenWidget" class="dropdown-item"
  2. href="#" data-bs-target="#divAddCustomWidgetModal"
  3. data-bs-toggle="modal" data-backdrop="static"
  4. data-url="@Url.Action(Actions._AddWidget, Controllers.Home, new { Area = string.Empty })">
  5. <span class="glyphicon glyphicon-cog"></span>Open Widget
  6. </a>
  1. <div class="modal fade" id="divAddCustomWidgetModal" tabindex="-1" aria-hidden="true">
  2. <div class="modal-body"></div>
  3. </div>
  1. $(document).ready(function () {
  2. $('a[data-bs-target="#divAddCustomWidgetModal"]').click(function () {
  3. var url = $(this).data('url');
  4. console.log(url);
  5. $('#divAddCustomWidgetModal .modal-body').load(url);
  6. });
  7. });

我尝试了所有的方法,但仍然不起作用。早些时候,模态div在其他地方,我甚至将其作为脚本移动到当前的cshtml中,但没有运气

xe55xuns

xe55xuns1#

在模态元素上必须有.modal-dialog.modal-body类,因此将.modal-dialog父容器添加到.modal-body

  1. <div class="modal fade" id="divAddCustomWidgetModal" tabindex="-1" aria-hidden="true">
  2. <div class="modal-dialog">
  3. <div class="modal-body"></div>
  4. </div>
  5. </div>

字符串
由于没有对话框容器,这里可能会出错:

  1. const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)


https://github.com/twbs/bootstrap/blob/main/js/src/modal.js#L181

  1. findOne(selector, element = document.documentElement) {
  2. return Element.prototype.querySelector.call(element, selector)
  3. }


https://github.com/twbs/bootstrap/blob/main/js/src/dom/selector-engine.js#L41
演示:

  1. $(document).ready(function () {
  2. $('a[data-bs-target="#divAddCustomWidgetModal"]').click(function () {
  3. var url = $(this).data('url');
  4. console.log(url);
  5. //$('#divAddCustomWidgetModal .modal-body').load(url);
  6. $('#divAddCustomWidgetModal .modal-body').load('https://placehold.co/400x200');
  7. });
  8. });
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  2. <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
  3. <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
  4. <a id="btnOpenWidget" class="dropdown-item" href="#" data-bs-target="#divAddCustomWidgetModal" data-bs-toggle="modal" data-bs-backdrop="static" data-url="@Url.Action(Actions._AddWidget, Controllers.Home, new { Area = string.Empty })">
  5. <span class="glyphicon glyphicon-cog"></span>Open Widget
  6. </a>
  7. <div class="modal fade" id="divAddCustomWidgetModal" tabindex="-1" aria-hidden="true">
  8. <div class="modal-dialog">
  9. <div class="modal-body"></div>
  10. </div>
  11. </div>
展开查看全部

相关问题