2016-09-21 48 views
1

关闭模式,滚动到div的

$("#contact-form").click(function() { 
 
    $('html, body').animate({ 
 
     scrollTop: $("#contact-section").offset().top 
 
    }, 2000); 
 
});
<div class="modal fade" id="saModal" role="dialog"> 
 
    <div class="modal-dialog"> 
 
     <div class="modal-content"> 
 
      <div class="modal-header"> 
 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
 
       <h3>title</h3> 
 
      </div> 
 
      <div class="modal-body"> 
 
       text 
 
      </div> 
 
      <div class="modal-footer"> 
 
       <button type="button" id="contact-form" class="btn btn-default pull-right glyphicon glyphicon-envelope">Contact</button> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div> 
 

 
<div id="contact-section"> 
 
<?php require 'contact.php'; ?> 
 
</div>

当我点击联系人,引导模式关闭的预期,但不会滚动接触部分,为什么呢?

+3

假设你正在试图通过一个自举模式叠加点击该按钮,那是你的问题。点击事件由覆盖图捕获以隐藏模式。一旦模态被隐藏,您需要再次点击该按钮以提升事件。一个更好的解决方案是钩住'hide.bs.modal'事件并在那里执行滚动 –

+0

控制台中的任何错误? –

+0

@RoryMcCrossan好的我会试试 – Lynob

回答

2

不要使用data-dismiss="modal"

<button type="button" id="contact-form" class="btn btn-default pull-right glyphicon glyphicon-envelope" >Contact</button> 

$("#contact-form").click(function() { 
    $('#myModal').modal('hide'); 
    $('html, body').animate({ 
     scrollTop: $("#contact-section").offset().top 
    }, 2000); 
}); 
1

我的想法,就像你可以在注释中看到,基于监听hide.bs.modal事件。

我的片段:

$('#saModal').on('hide.bs.modal', function(e) { 
 
    if ($('#saModal').attr('ModalXbuttonPressed') != undefined) { 
 
    $('#saModal').removeAttr('ModalXbuttonPressed'); 
 
    return; 
 
    } 
 
    $('html, body').animate({ 
 
    scrollTop: $("#contact-section").offset().top 
 
    }, 2000); 
 
}); 
 

 
$('#saModal button[class="close"][data-dismiss="modal"]').on('click', function(e) { 
 
    $('#saModal').attr('ModalXbuttonPressed', true); 
 
}); 
 

 

 
$("#contact-form").on('click', function(e) { 
 
    $('#saModal').modal('hide'); 
 
});
#contact-section { 
 
    position: absolute; 
 
    top: 500px; 
 
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#saModal"> 
 
    Open saModal 
 
</button> 
 
<div class="modal fade" id="saModal" role="dialog"> 
 
    <div class="modal-dialog"> 
 
     <div class="modal-content"> 
 
      <div class="modal-header"> 
 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
 
       <h3>title</h3> 
 
      </div> 
 
      <div class="modal-body"> 
 
       text 
 
      </div> 
 
      <div class="modal-footer"> 
 
       <button type="button" id="contact-form" class="btn btn-default pull-right glyphicon glyphicon-envelope">Contact</button> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div> 
 

 
<div id="contact-section"> 
 
    <p>contact-section</p> 
 
    <p>contact-section</p> 
 
    <p>contact-section</p> 
 
    <p>contact-section</p> 
 
</div>

+0

但是即使我点击了x按钮 – Lynob

+0

@Lynob代码段已更新,这将会悬停下来。现在,单击x按钮,不向下滚动将会生效。非常感谢,并让我知道 – gaetanoM

+0

谢谢你,现在它的工作原理,并且在我的代码中修复了一些东西之后,第一个答案也起作用,所以我接受了它,因为他们都工作,但他的代表少得多,他的答案被首先发布,但你的答案有效!万分感谢! – Lynob