Bootstrap模态不在laravel中工作

时间:2016-07-17 14:32:03

标签: javascript jquery html twitter-bootstrap laravel

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

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

<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 code:

 @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();
});

3 个答案:

答案 0 :(得分: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();
});

您需要阻止链接的默认行为才能用于打开模式。由于点击事件发生在链接元素

上,因此没有理由将列表元素作为目标

答案 1 :(得分:1)

你可以通过修改你的代码来做到这一点,正如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

答案 2 :(得分:0)

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