[英]How to change Bootstrap modal content depending on button click
我需要能够根据单击的按钮更改模式内的内容。
例如,如果单击按钮 1,它只会显示class
“one”的div
,而其他的将保持隐藏。
$('#exampleModalCenter').modal('toggle')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter">one</button> <button type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter">two</button> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <!-- jQuery library --> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <button type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter">three</button> <!-- Modal --> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="one">Button one content</div> <div class="two">Button two content</div> <div class="one">Button three content</div> </div> </div> </div> </div>
你可以看看这个教程: https : //getbootstrap.com/docs/3.4/javascript/#modals-related-target
只需将数据属性添加到您的按钮:
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#yourModal" data-name="one">Open modal for One</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#yourModal" data-name="two">Open modal for Two</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#yourModal" data-name="three">Open modal for Three</button>
当事件发生时,你可以恢复按钮的属性并根据它调整行为:
$('#yourModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget); // Button that triggered the modal
var recipient = button.data('name'); // Extract info from data-* attributes
// Here, you can change the behavior according to the button clicked :
switch(recipient) {
case 'one':
$('.one').show();
break;
case 'two':
$('.two').show();
break;
// etc...
}
});
你可以订阅模式的show.bs.modal事件,检查的价值relatedTarget
事件的属性,然后显示/隐藏内部的div基于该目标值
下面举例。 逻辑:每当您单击按钮时,先隐藏所有内容,然后根据您单击的按钮显示特定内容。
参考: https : //getbootstrap.com/docs/3.3/javascript/#modals-related-target
$(".btn").click(function () { $(".parent").children().each(function () { $(this).hide(); }); $(`div.${$(this).attr("id")}`).show(); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" /> <!-- jQuery library --> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <button id="one" type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter" > one </button> <button id="two" type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter" > two </button> <button id="three" type="button" class="btn" data-toggle="modal" data-target="#exampleModalCenter" > three </button> <!-- Modal --> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true" > <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" > <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="parent"> <div class="one">Button one content</div> <div class="two">Button two content</div> <div class="three">Button three content</div> </div> </div> </div> </div> </div>
$(document).on("click",".modal-open",function(){ var button_val = $(this).attr("data-val"); $('#exampleModalCenter').modal('show'); $(".conditional-div").hide(); $("#exampleModalCenter ."+button_val).show(); })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button type="button" class="btn modal-open" data-val="one" >one</button> <button type="button" class="btn modal-open" data-val="two" >two</button> <button type="button" class="btn modal-open" data-val="three" >three</button> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <!-- jQuery library --> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <!-- Modal --> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="one conditional-div">Button one content</div> <div class="two conditional-div">Button two content</div> <div class="three conditional-div">Button three content</div> </div> </div> </div> </div>
你可以这样做 :
$('button.btn-open-modal').on('click', function(){ let targetClass = $(this).attr("target-class"); $("#exampleModalCenter div.modal-body > div").each(function(){ if($(this).hasClass(targetClass)){ $(this).show(); }else { $(this).hide(); } }); $('#exampleModalCenter').modal('toggle'); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <!-- jQuery library --> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <button type="button" class="btn btn-open-modal" target-class="one">one</button> <button type="button" class="btn btn-open-modal" target-class="two">two</button> <button type="button" class="btn btn-open-modal" target-class="three">three</button> <!-- Modal --> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="one">Button one content</div> <div class="two">Button two content</div> <div class="three">Button three content</div> </div> </div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.