所以,我正在使用bootstrap的模态。
我想制作一个向导样式模式并提出以下解决方案:
div snippets:
<div class="modal-instance hide fade" id="step1">
<div id="stepa">
...
</div>
</div>
<div id="stepb" style="display: none;">
...
</div>
在步骤中按下按钮 - 加载步骤b。
javascript片段:
$("#stepa").replaceWith($('#stepb'));
document.getElementById('stepb').style.display = 'block';
这没问题。
但是当我解雇模态时。 div step仍然被stepb取代。我的解决方案是在隐藏模态时建立一个替换为stepa的替代品:
$("#myModal").on("hidden", function() {
//replace the child
});
我试过了:
$('#step1').children().remove();
$('#step1').append($('#stepa'));
和
$("#step1").children("div:first").replaceWith($('#stepa'));
但是我很难选择步骤-a作为替换div,可能是因为它不是一个单独的div。我的问题是,这是一个向导风格的模态的正确方法还是我应该采取另一种方法?
答案 0 :(得分:1)
隐藏前一步和后一步,而不是复制它们要简单得多。
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
<div id="myModal" class="modal hide fade" data-step="1">
<div class="step step1">
<h1>Step 1</h1>
<button class="btn next">Next</button>
</div>
<div class="step step2">
<h1>Step 2</h1>
<button class="btn previous">Previous</button>
<button class="btn next">Next</button>
</div>
<div class="step step3">
<h1>Step 3</h1>
<button class="btn previous">Previous</button>
<button class="btn done" data-dismiss="modal">Done</button>
</div>
</div>
<style type="text/css">
#myModal > .step { display: none; }
</style>
<script type="text/javascript">
$(function() {
showStep(parseInt($('#myModal').data('step')) || 1);
$('#myModal .next').on('click', function () {
showStep(parseInt($('#myModal').data('step')) + 1);
});
$('#myModal .previous').on('click', function () {
showStep(parseInt($('#myModal').data('step')) - 1);
});
$('#myModal').on('hidden', function() {
showStep(1);
});
function showStep(step) {
$('#myModal').data('step', step);
$('#myModal > .step').hide();
$('#myModal > .step' + step).show();
}
});
</script>