引导模式在 laravel 中不起作用

Posted

技术标签:

【中文标题】引导模式在 laravel 中不起作用【英文标题】:Bootstrap modal not working in laravel 【发布时间】:2016-11-20 05:05:11 【问题描述】:

我希望当我点击编辑帖子下拉链接时,会打开一个模式,但除了刷新页面之外什么都没有发生。

我的布局视图中包含的脚本:

<script src="https://code.jquery.com/jquery-1.12.0.min.js"   ></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js" ></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
        integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
        crossorigin="anonymous"></script>
<script src="src/js/myplace.js"></script>

html 代码:

 @if(Auth::user()==$post->user)
   <ul id="remove" class="dropdown-menu" role="menu">
    <a id="remove2" href="route('post.delete',['post_id' => $post->id])">
       <li  id="remove3" role="presentation">Remove This Post </li>
    </a>
    <a id="remove2" href="">
       <li  id="remove3" role="presentation">Edit This Post </li>
    </a>
   </ul>
   @endif

我的 JS 文件:

$('#remove2').find('li').on('click' , function()
  $('#edit-modal').modal();
);

【问题讨论】:

模态初始化也无效,模态会在每次点击时多次注册。如果需要,需要在开始时初始化并在点击时切换。 您的 html 无效。 &lt;a&gt; 不能是 &lt;ul&gt; 的孩子,也不能有孩子 &lt;li&gt; 并且您重复 ID 【参考方案1】:

您的示例没有 Bootstrap 模态 HTML,但我假设您在页面上有它。

您遇到了几个问题。首先,您有多个具有相同 ID 的元素,这是您无法做到的。 ID 必须是唯一的。

其次,您正在对链接元素使用点击操作,这可能会触发其默认行为。

把你的 HTML 改成这样

 @if(Auth::user()==$post->user)
   <ul id="remove" class="dropdown-menu" role="menu">
    <a id="remove2" href="route('post.delete',['post_id' => $post>id])">
       <li  role="presentation">Remove This Post </li>
    </a>
    <a id="remove3" href="">
       <li  role="presentation">Edit This Post </li>
    </a>
   </ul>
   @endif

还有你的 javascript

$('#remove3').on('click' , function(e)
   e.preventDefault();
  $('#edit-modal').modal();
);

您需要阻止链接的默认行为才能使用它打开模式。没有理由将列表元素作为目标,因为链接元素上发生了点击事件

【讨论】:

【参考方案2】:

您可以通过稍微修改代码来做到这一点,正如 Rob Fonseca 在上述答案中所建议的那样,但这里有其他可能适合您的解决方案。

这是你的下拉菜单

@if(Auth::user()==$post->user)
<ul class="dropdown-menu">
     <li><a href="#">Remove</a></li> //Replace with your code 
     <li><a href="#" onclick="editPost( $post>id )">Edit</a></li>
</ul>
@endif

您可以随心所欲地使用 Id,但要确保它是唯一的。

这里是Javascript函数

function editPost(postId)
  //Here You can do more stuff like make ajax call to load post data...
  $('#editPostModel').modal();

您可以在这里找到工作示例:JsFiffle

【讨论】:

【参考方案3】:

如果您使用的是 Bootstrap 5.0,则在 bootstrap.js 或您的 app.js 代码中,data-dismiss 选择器似乎已更改为 data-bs-dismiss。 所以我只需将data-dismiss="modal" 更改为data-bs-dismiss="modal" 就可以了。 Version: Laravel 8

【讨论】:

以上是关于引导模式在 laravel 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTable中的引导日期选择器在Laravel应用程序中不起作用

悬停在引导模式图像中不起作用

为啥在模式内部切换在 laravel 中不起作用?

引导模式在下拉菜单中不起作用

Jquery位置选择器自动完成在引导模式中不起作用

Select2 在引导模式中不起作用