简体   繁体   English

Bootstrap 模式:关闭当前,打开新

[英]Bootstrap modal: close current, open new

I have looked for a while, but I can't find a solution for this.我已经找了一段时间,但我找不到解决方案。 I want the following:我想要以下内容:

  • Open an URL inside a Bootstrap modal.在 Bootstrap 模式中打开一个 URL。 I have this working off course.我有这个工作。 So the content is loaded dynamically.所以内容是动态加载的。
  • When an user pushes a button inside this modal, I want the current modal to hide, and immediately after that, I want a new modal to open with the new URL (which the user clicked on).当用户按下此模式中的按钮时,我希望隐藏当前模式,然后立即使用新 URL(用户单击的 URL)打开一个新模式。 This content of the 2nd modal is also loaded dynamically.第二个模态的内容也是动态加载的。
  • If the user then closes that 2nd modal, the first modal must come back again.如果用户随后关闭了第二个模态,则第一个模态必须再次返回。

I have been staring at this for days, hope someone can help me.我已经盯着这个好几天了,希望有人能帮助我。

Thanks in advance.提前致谢。

I know this is a late answer, but it might be useful.我知道这是一个迟到的答案,但它可能有用。 Here's a proper and clean way to get this done, as @karima's mentioned above.正如@karima 上面提到的那样,这是完成此操作的适当而干净的方法。 You can actually fire two functions at once;你实际上可以一次触发两个函数; trigger and dismiss the modal. triggerdismiss模态。

HTML Markup; HTML 标记;

<!-- Button trigger modal -->
<ANY data-toggle="modal" data-target="TARGET">...</ANY>

<div class="modal fade" id="SELECTOR" tabindex="-1">
  <div class="modal-dialog">
   <div class="modal-content">
    <div class="modal-body"> ... </div>
     <div class="modal-footer">           <!-- ↓ -->  <!--      ↓      -->
      <ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal">...</ANY>
     </div>
   </div>
  </div>
</div>

Demo演示

Without seeing specific code, it's difficult to give you a precise answer.没有看到具体的代码,很难给你一个准确的答案。 However, from the Bootstrap docs, you can hide the modal like this:但是,从 Bootstrap 文档中,您可以像这样隐藏模式:

$('#myModal').modal('hide')

Then, show another modal once it's hidden:然后,在隐藏后显示另一个模式:

$('#myModal').on('hidden.bs.modal', function () {
  // Load up a new modal...
  $('#myModalNew').modal('show')
})

You're going to have to find a way to push the URL to the new modal window, but I'd assume that'd be trivial.您将不得不找到一种方法将 URL 推送到新的模式窗口,但我认为这很简单。 Without seeing the code it's hard to give an example of that.如果没有看到代码,很难给出一个例子。

It's not exactly the response but it's useful when you want to close the current modal and open a new modal.它不完全是响应,但是当您想关闭当前模态并打开新模态时它很有用。

In the html in the same button, you can ask to close the current modal with data-dismiss and open a new modal directly with data-target:在同一个按钮的 html 中,您可以要求使用 data-dismiss 关闭当前模态并直接使用 data-target 打开一个新模态:

<button class="btn btn-success" 
data-toggle="modal" 
data-target="#modalRegistration" 
data-dismiss="modal">Register</button>

Problem with data-dismiss="modal" is it will shift your content to left data-dismiss="modal"是它会将您的内容向左移动

I am sharing what worked for me, problem statment was opening pop1 from pop2我正在分享对我有用的东西,问题陈述是从pop2打开pop1

JS CODE代码

var showPopup2 = false;
$('#popup1').on('hidden.bs.modal', function () {
    if (showPopup2) {
        $('#popup2').modal('show');
        showPopup2 = false;
    }
});

$("#popup2").click(function() {
    $('#popup1').modal('hide');
    showPopup2 = true;
});

I use this method:我用这个方法:

$(function() {
  return $(".modal").on("show.bs.modal", function() {
    var curModal;
    curModal = this;
    $(".modal").each(function() {
      if (this !== curModal) {
        $(this).modal("hide");
      }
    });
  });
});

As mentioned above In the html in the same button, you can ask to close the current modal with data-dismiss and open a new modal directly with data-target:如上所述,在同一个按钮的 html 中,您可以要求使用 data-dismiss 关闭当前模态并直接使用 data-target 打开一个新模态:

<button class="btn btn-success" data-toggle="modal" data-target="#modalRegistration" data-dismiss="modal">Register</button>

But this will cause scroll-bar to disappear and you will notice that if the second modal was taller than the first one但这会导致滚动条消失,你会注意到如果第二个模态比第一个高

So the solution is to add the following style in the modal inline style :所以解决方案是在模态内联样式中添加以下样式:

Style = "overflow-y : scroll ; "

By using the following code you can hide first modal and immediately open second modal, by using same strategy you can hide second modal and show the first one.通过使用以下代码,您可以隐藏第一个模式并立即打开第二个模式,通过使用相同的策略,您可以隐藏第二个模式并显示第一个。

$("#buttonId").on("click", function(){
    $("#currentModalId").modal("hide");
    $("#currentModalId").on("hidden.bs.modal",function(){
    $("#newModalId").modal("show");
    });
});

You need to add following attribute to the link or button where you want add this functionality:您需要将以下属性添加到要添加此功能的链接或按钮:

 data-dismiss="modal" data-toggle="modal" id="forgotPassword" data-target="#ModalForgotPassword"

A detaile blog: http://sforsuresh.in/bootstrap-modal-window-close-current-open-new-modal/详细博客: http ://sforsuresh.in/bootstrap-modal-window-close-current-open-new-modal/

data-dismiss="modal" 

it is used to close the existing opened model.它用于关闭现有打开的模型。 you can set it to the new model您可以将其设置为新模型

With BootStrap 3, you can try this:-使用 BootStrap 3,你可以试试这个:-

var visible_modal = jQuery('.modal.in').attr('id'); // modalID or undefined
if (visible_modal) { // modal is active
    jQuery('#' + visible_modal).modal('hide'); // close modal
}

Tested to work with: http://getbootstrap.com/javascript/#modals (click on "Launch Demo Modal" first).经测试可使用: http : //getbootstrap.com/javascript/#modals (首先单击“启动演示模式”)。

I have exact same problem, and my solution is only if modal dialog have [role="dialog"] attribute :我有完全相同的问题,我的解决方案仅当模态对话框具有 [role="dialog"] 属性时:

/*
* Find and Close current "display:block" dialog,
* if another data-toggle=modal is clicked
*/
jQuery(document).on('click','[data-toggle*=modal]',function(){
  jQuery('[role*=dialog]').each(function(){
    switch(jQuery(this).css('display')){
      case('block'):{jQuery('#'+jQuery(this).attr('id')).modal('hide'); break;}
    }
  });
});

I had the same issue as @Gravity Grave whereby scrolling doesn't work if you use我遇到了与@Gravity Grave 相同的问题,如果您使用,则滚动不起作用

data-toggle="modal" data-target="TARGET-2" 

in conjunction with和这个结合

data-dismiss="modal"

The scroll doesn't work correctly and reverts to scrolling the page rather than the modal.滚动无法正常工作并恢复为滚动页面而不是模式。 This is due to data-dismiss removing the modal-open class from the tag.这是由于 data-dismiss 从标签中删除了 modal-open 类。

My solution in the end was to set the html of the inner component on the modal and use css to fade the text in/out.我最终的解决方案是在模态上设置内部组件的 html 并使用 css 淡入/淡出文本。

Had the same issue, writing this here in case someone in the future stumbles upon this and has issues with multiple modals that have to have scrolling as well (I'm using Bootstrap 3.3.7)有同样的问题,写在这里以防将来有人偶然发现这个问题并且有多个模态也必须滚动的问题(我正在使用 Bootstrap 3.3.7)

What I did is have a button like this inside my first modal:我所做的是在我的第一个模态中有一个这样的按钮:

<div id="FirstId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_2">Open modal</div>

It will hide the first and then display the second, and in the second modal I would have a close button that would look like this:它将隐藏第一个,然后显示第二个,在第二个模式中,我将有一个关闭按钮,如下所示:

<div id="SecondId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_1">Close</div>

So this will close the second modal and open up the first one and to make scrolling work I added to my .css file this line:因此,这将关闭第二个模式并打开第一个模式并进行滚动工作,我将此行添加到我的 .css 文件中:

.modal {
overflow: auto !important;
}

PS: Just a side note, you have to have these modals separately, the minor modal can not be nested in the first one as you hide the first one PS:只是一个旁注,你必须分别拥有这些模态,小模态不能嵌套在第一个中,因为你隐藏了第一个

So here's the full example based on the bootstrap modal example:所以这是基于引导模式示例的完整示例:

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  Launch demo modal
</button>

<!-- Modal 1 -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        Add lorem ipsum here
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-dismiss="modal" data-toggle="modal" data-target="#exampleModal2">
          Open second modal
        </button>
      </div>
    </div>
  </div>
</div>

<!-- Modal 2 -->
<div class="modal fade" id="exampleModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal"  data-toggle="modal" data-target="#exampleModal">Close</button>
      </div>
    </div>
  </div>
</div>

For Bootstrap v4对于 Bootstrap v4

You can toggle between modals by having putting data-dismiss="modal" and data-toggle="modal" in the same HTML element.您可以通过将data-dismiss="modal"data-toggle="modal"放在同一个 HTML 元素中来在data-toggle="modal" You'd also need the data-target attribute set to the modal you'd like to open.您还需要将data-target属性设置为您想要打开的模式。

Here's an example:下面是一个例子:

<button type="button" class="btn btn-primary" data-dismiss="modal" data-toggle="modal" data-target="#Modal2" >
Open second modal
</button>

Remember to set an id for each of the modals and have the data-target point to the one you'd like to open请记住为每个模态设置一个 id 并将数据目标指向您要打开的那个

For bootstrap v5对于引导程序 v5

Same as v4 just using the attributes data-bs-toggle data-bs-dismiss and data-bs-target与 v4 相同,只是使用属性data-bs-toggle data-bs-dismissdata-bs-target

Like this:像这样:

<button class="btn btn-primary" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#Modal2" >
Open second modal
</button>

They've included an example of this in the v5 documentation他们在 v5 文档中包含了一个示例

NOTE:笔记:

The two modals need to be independent of each other, not nested in one another, in order for this to work.这两个模态需要相互独立,而不是相互嵌套,才能使其工作。 So if you're using an MVC framework, say for example ASP.NET MVC, and have the first modal as its own partial view, you can't have the second modal in that view.因此,如果您使用的是 MVC 框架,例如 ASP.NET MVC,并且将第一个模式作为其自己的部分视图,则该视图中不能有第二个模式。 You'll need to put the second modal in the parent view.您需要将第二个模式放在父视图中。

Using click function:使用点击功能:

$('.btn-editUser').on('click', function(){
    $('#viewUser').modal('hide'); // hides modal with id viewUser 
    $('#editUser').modal('show'); // display modal with id editUser
});

Heads up:抬头:

Make sure that the one you want to show is an independent modal.确保您要显示的是一个独立的模态。

In first modal:在第一个模态中:

replace modal dismiss link in footer with close link below.用下面的关闭链接替换页脚中的模式关闭链接。

<div class="modal-footer">
      <a href="#"  data-dismiss="modal" class="btn btn-primary" data-toggle="modal" data-target="#second_model_id">Close</a>
</div>

In second modal:在第二种模式中:

Then second modal replace top div with below div tag.然后第二个模态用下面的 div 标签替换顶部 div。

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="add text for disabled people here" aria-hidden="true" id="second_model_id">

Try this试试这个

    $('#model1').modal('hide');
setTimeout(function(){
    $('#modal2').modal('show');
},400);

This code, close modal opened, open the new modal but inmediatly, new modal is closed.这段代码,关闭模态打开,打开新模态但立即,新模态被关闭。

$(nameClose).modal('hide');
$(nameOpen).modal('show');

My solution for open new modal after close other is:我关闭其他后打开新模式的解决方案是:

function swapModals(nameClose,nameOpen) {
    $(nameClose).modal('hide');
    $(nameClose).on('hidden.bs.modal', function () {
        console.log('Fired when hide event has finished!');
        $(nameOpen).modal('show');
    });
}
$("#buttonid").click(function(){
    $('#modal_id_you_want_to_hid').modal('hide')
});

// same as above button id
$("#buttonid").click(function(){
$('#Modal_id_You_Want_to_Show').modal({backdrop: 'static', keyboard: false})});

I use another way:我用另一种方式:

$('#showModal').on('hidden.bs.modal', function() {
        $('#easyModal').on('shown.bs.modal', function() {
            $('body').addClass('modal-open');
        });
    });

If you want to close the previously opened modal while opening the new modal then you must do it from javascript/jquery by first closing the current open modal and then give a 400ms timeout to allow it to close and then open the new modal like below code :如果要在打开新模式时关闭先前打开的模式,则必须从 javascript/jquery 执行此操作,首先关闭当前打开的模式,然后设置 400 毫秒超时以允许其关闭,然后打开新模式,如下面的代码:

$('#currentModal').modal('hide');

setTimeout(function() {
       //your code to be executed after 200 msecond 
       $('#newModal').modal({
           backdrop: 'static'//to disable click close
   })
}, 400);//delay in miliseconds##1000=1second

If you try to do it with the data-dismiss="modal" then it will have the scroll issue as mentioned by @gravity and @kuldeep in comments.如果您尝试使用data-dismiss="modal"那么它将出现 @gravity 和 @kuldeep 在评论中提到的滚动问题。

None of the answers helped me since I wanted to achieve something which was exactly the same as mentioned in the question.没有一个答案对我有帮助,因为我想实现与问题中提到的完全相同的东西。

I have created a jQuery plugin for this purpose.为此,我创建了一个 jQuery 插件。

/*
 * Raj: This file is responsible to display the modals in a stacked fashion. Example:
 * 1. User displays modal A
 * 2. User now wants to display modal B -> This will not work by default if a modal is already displayed
 * 3. User dismisses modal B
 * 4. Modal A should now be displayed automatically -> This does not happen all by itself 
 * 
 * Trying to solve problem for: http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new
 * 
 */

var StackedModalNamespace = StackedModalNamespace || (function() {
    var _modalObjectsStack = [];
    return {
        modalStack: function() {
            return _modalObjectsStack;
        },
        currentTop: function() {
            var topModal = null;
            if (StackedModalNamespace.modalStack().length) {
                topModal = StackedModalNamespace.modalStack()[StackedModalNamespace.modalStack().length-1];
            }
            return topModal;
        }
    };
}());

// http://stackoverflow.com/a/13992290/260665 difference between $.fn.extend and $.extend
jQuery.fn.extend({
    // https://api.jquery.com/jquery.fn.extend/
    showStackedModal: function() {
        var topModal = StackedModalNamespace.currentTop();
        StackedModalNamespace.modalStack().push(this);
        this.off('hidden.bs.modal').on('hidden.bs.modal', function(){   // Subscription to the hide event
            var currentTop = StackedModalNamespace.currentTop();
            if ($(this).is(currentTop)) {
                // 4. Unwinding - If user has dismissed the top most modal we need to remove it form the stack and display the now new top modal (which happens in point 3 below)
                StackedModalNamespace.modalStack().pop();
            }
            var newTop = StackedModalNamespace.currentTop();
            if (newTop) {
                // 3. Display the new top modal (since the existing modal would have been hidden by point 2 now)
                newTop.modal('show');
            }
        });
        if (topModal) {
            // 2. If some modal is displayed, lets hide it
            topModal.modal('hide');
        } else {
            // 1. If no modal is displayed, just display the modal
            this.modal('show');
        }
    },
});

Working Fiddle for reference, JSFiddle: https://jsfiddle.net/gumdal/67hzgp5c/工作小提琴供参考, JSFiddle: https ://jsfiddle.net/gumdal/67hzgp5c/

You just have to invoke with my new API " showStackedModal() " instead of just " modal('show') ".你只需要使用我的新 API “ showStackedModal() ”而不是“ modal('show') ”来调用。 The hide part can still be the same as before and the stacked approach of showing & hiding the modals are automatically taken care.隐藏部分仍然可以与以前相同,并且会自动注意显示和隐藏模态的堆叠方法。

Simple and elegant solution for BootStrap 3.x. BootStrap 3.x 的简单而优雅的解决方案。 The same modal can be reused in this way.可以通过这种方式重复使用相同的模态。

$("#myModal").modal("hide");
$('#myModal').on('hidden.bs.modal', function (e) {
   $("#myModal").html(data);
   $("#myModal").modal();
   // do something more...
}); 

if you use mdb use this code如果您使用 mdb 使用此代码

    var visible_modal = $('.modal.show').attr('id'); // modalID or undefined
    if (visible_modal) { // modal is active
        $('#' + visible_modal).modal('hide'); // close modal
    }
<div class="container">
  <h1>Bootstrap modal: close current, open new</h1>
  <p class="text-muted">
  A proper and clean way to get this done without addtional Javascript/jQuery. The main purpose of this demo is was to answer this 
  <a href="http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new">question on stackoverflow</a>
  </p>
  <hr />

  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1">Launch Modal #1</button>
  <button type="button" class="btn btn-info"    data-toggle="modal" data-target="#demo-2">Launch Modal #2</button>
  <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3">Launch Modal #3</button>

  <!-- [ Modal #1 ] -->
  <div class="modal fade" id="demo-1" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #1</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #2 ] -->
  <div class="modal fade" id="demo-2" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #2</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #3 ] -->
  <div class="modal fade" id="demo-3" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title caps"><strong>Demo Modal #3</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
        </div>
     </div>
    </div>
  </div>

  <hr />
  <h3 class="caps">Usage:</h3>
<pre class="prettyprint">&lt;!-- Button trigger modal --&gt;
&lt;ANY data-toggle="modal" data-target="TARGET"&gt;...&lt;/ANY&gt;

&lt;div class="modal fade" id="SELECTOR" tabindex="-1"&gt;
  &lt;div class="modal-dialog"&gt;
   &lt;div class="modal-content"&gt;
    &lt;div class="modal-body"&gt; ... &lt;/div&gt;
     &lt;div class="modal-footer"&gt;           &lt;!-- ↓ --&gt;  &lt;!--      ↓      --&gt;
      &lt;ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal"&gt;...&lt;/ANY&gt;
     &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
</div> <!-- end .container -->

<hr />
<footer class="text-center"><a href="https://twitter.com/_elmahdim">@_elmahdim</a></footer>
<br />
<br />

I might be a bit late to this but I think I've found working solution.我可能有点晚了,但我想我已经找到了可行的解决方案。

Required -必填 -

jQuery jQuery

All modals with a closing/dismissal button having attributes set as follows -所有带有关闭/关闭按钮的模式,其属性设置如下 -

<button type="button" class="btn close_modal" data-toggle="modal" data-target="#Modal">Close</button>  

Please see the class close_modal added to the button's classes请查看添加到按钮类中的close_modal

Now to close all existing modals, we'll call现在要关闭所有现有的模态,我们将调用

$(".close_modal").trigger("click");

So, wherever you want to open a modal所以,无论你想打开一个模态

Just add the above code and your all open modals shall get closed.只需添加上面的代码,您所有打开的模态都会关闭。

Then add your normal code to open the desired modal然后添加您的正常代码以打开所需的模态

$("#DesiredModal").modal();

Hide modal dialog box.隐藏模式对话框。

Method 1: using Bootstrap.方法一:使用Bootstrap。

$('.close').click(); 
$("#MyModal .close").click();
$('#myModalAlert').modal('hide');

Method 2: using stopPropagation() .方法 2:使用stopPropagation()

$("a.close").on("click", function(e) {
  $("#modal").modal("hide");
  e.stopPropagation();
});

Method 3: after shown method invoke.方法3:显示方法调用后。

$('#myModal').on('shown', function () {
  $('#myModal').modal('hide');
})

Method 4: Using CSS.方法4:使用CSS。

this.display='block'; //set block CSS
this.display='none'; //set none CSS after close dialog

Just copy and paste this code and you can experiment with two modals.只需复制并粘贴此代码,您就可以试验两种模式。 Second modal is open after closing the first one:关闭第一个模态后打开第二个模态:

<!-- Button to Open the Modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
    Open modal
</button>

<!-- The Modal -->
<div class="modal" id="myModal">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Modal Heading</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>



<!-- The Modal 2 -->
<div class="modal" id="myModal2">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Second modal</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>




<script>
    $('#myModal').on('hidden.bs.modal', function () {
        $('#myModal2').modal('show')
    })
</script>

Cheers!干杯!

just close all open modals before opening a new one在打开一个新的模态之前关闭所有打开的模态

$('.modal').modal('hide'); // close all open modals
$('#login').modal('show'); // open a modal named #login

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM