2015-01-16 5 views
0

문제가 있습니다. 전에는 부트 스트랩 3 모달 창과 함께 본 적이 없었습니다. 부트 스트랩 모달 창을 닫고 다시 열어 마지막으로 닫은 위치를 저장하는지 확인합니다. 일반적으로 다시 열 때마다 스크롤을 재설정하지만 이번에는 다시 스크롤하지 않습니다.스크립트를 올바르게 배치하여 실행할 수있는 위치는 어디입니까?

$(document).ready(function() { 
    $('#myModal').on('shown.bs.modal', function (e){ 
     $('.modal-content').scrollTop(0); 
    }); 
}); 

내 대답에 대한 해결책이 될 수 있지만, 다시 그것을 실행되지 않습니다 :

 <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
      <div class="modal-dialog modal-lg"> 
      <div class="modal-content"> 
       <div class="modal-body"> 
        <a title="Close" class="fancybox-item fancybox-close" data-dismiss="modal" aria-label="Close"></a> 
       <img src="images/sunset1.jpg" alt="me"/> 
       <h2>Content test</h2> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
       </div> 
       <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       <button type="button" class="btn btn-primary">Save changes</button> 
       </div> 
      </div> 
      </div> 
     </div> 

그래서 나는이 스크립트를 발견했다. 내가 디버깅하고 외부 js 파일 (custom.js)에 페이지를로드 할 때 이것을 넣으면 $(document).ready 기능을 인식하지만 입력하지 않는다고 분석했습니다. 나도 같은 결과가 발생하는 HTML 페이지의 맨 아래에 넣으려고했는데 마지막으로 모달 아래에서 새 스크립트를 만들어 보았지만 Reference error: $ not defined 메시지를주고 jQuery 뒤에 넣어야한다는 것을 알고 있습니다. 플러그인은 하단에 .. 호출됩니다. $(document).ready 함수를 제거하면 모든 경우에 모달 함수가 인식되지만 계속 실행되지는 않습니다. 이 함수를 작동시키는 방법에 관해서는 꽤 많이 분실 되었습니까?


EDIT :

<head> 
<!-- Included script in head to run and fix bootstrap modal scroll 'save' position --> 
<link rel="stylesheet" href="css/bootstrap.min.css" /> 
<script src="js/jquery-1.8.2.min.js" type="text/javascript"></script> 
<script src="js/jquery-ui.min.js" type="text/javascript"></script> 
<script src="js/bootstrap.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#myModal').on('shown.bs.modal', function (e){ 
     $('.modal-content').scrollTop(0); 
    }); 
}); 
</script> 
</head> 




    <div class="modal fade bs-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
       <div class="modal-dialog modal-lg"> 
       <div class="modal-content"> 
        <div class="modal-body"> 
         <a title="Close" class="fancybox-item fancybox-close" data-dismiss="modal" aria-label="Close"></a> 
        <img src="images/sunset1.jpg" alt="me"/> 
        <h2>Content test</h2> 
       <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
       <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
       <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
       <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
        </div> 
        <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
        <button type="button" class="btn btn-primary">Save changes</button> 
        </div> 
       </div> 
       </div> 
      </div> 

결과 : DelightedD0D 의해

Result

해결책 :

수정 된 스크립트 :

<script type="text/javascript"> 
$(function() { 
    $('#myModal').on('hide.bs.modal', function (e){ 
     $('#myModal').scrollTop(0); // change from .model-content to #myModal 
    }); 
}); 
</script> 
+0

나는 당신이 무슨 뜻인지 이해가 확실하지 않다. 이미 모달 아래에 스크립트 태그를 넣으려고했습니다. jQuery 라이브러리를 헤드 섹션에 넣으시겠습니까? – TheAmazingKnight

+0

코드에 실제로 '' 태그가 누락 되었습니까? 아니면 여기에 오타가 있습니까? – DelightedD0D

+0

아니요, 여기 오타가 있습니다. 실제 코드에는 body 태그가 있습니다. – TheAmazingKnight

답변

1

코드 배치에 따라 정렬해야합니다. 모달 DIV 제공하는 것을 잊지 말라 아이디 myModal는 현재 HTML은 그것을 가지고하지 않습니다 jfriend00 @

<!doctype html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Untitled Document</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

<!-- Latest compiled and minified CSS --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> 

<!-- Optional theme --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css"> 

<!-- Latest compiled and minified JavaScript --> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> 

<script> 
$(function() { 
    $('#myModal').on('shown.bs.modal', function(e){ 
     alert('Modal was shown!'); 
     // $('#myModal').scrollTop(0); 
    }); 
}); 
</script> 
</head> 

<body> 


<a href="#myModal" data-toggle="modal" data-target="#myModal" class="bg">Click to open modal</a> 


<div class="modal fade bs-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
      <div class="modal-dialog modal-lg"> 
      <div class="modal-content"> 
       <div class="modal-body"> 
        <a title="Close" class="fancybox-item fancybox-close" data-dismiss="modal" aria-label="Close"></a> 
       <img src="images/sunset1.jpg" alt="me"/> 
       <h2>Content test</h2> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum erat et neque tincidunt volutpat. Cras eget augue id dui varius pretium. Cras posuere dolor risus. Pellentesque elementum ultricies quam, sit amet rhoncus nisl viverra in. Cras imperdiet nisi a euismod molestie. Ut a metus arcu. Pellentesque feugiat dictum erat.</p> 
       </div> 
       <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       <button type="button" class="btn btn-primary">Save changes</button> 
       </div> 
      </div> 
      </div> 
     </div> 
</body> 
</html> 
+0

제안 된 변경 사항으로 위의 게시물을 수정했지만 여전히 작동하지 않습니다. 페이지가로드 될 때, 스크립트는'$ (document) .ready' 함수의 끝에 도달 한 것 같습니다.}}; 그리고 그것은 실행 된 시간 일뿐입니다. 나는 그것과 관련이 있는지 모르지만 Global 범위는'undefined'를 반환했습니다. – TheAmazingKnight

+0

죄송합니다.'$ (function() {....});'로 변경되었습니다. – DelightedD0D

+0

똑같은 문제가 발생했습니다. 다른 라이브러리와의 충돌이나 충돌 일 수 있습니다. 나는 모든 문제에 대한 해결책이 있다는 것을 알고 있지만, 이것은 가장 길고 여전히 해결책이 아닙니다. 나는 그것이해야 할 때를 거치지 않는 이유를 아직도 이해하지 못한다. : – TheAmazingKnight