2015-01-16 2 views
0

У меня проблема, у меня никогда не было с модальным окном Bootstrap 3. Я прокручиваю вниз, чтобы закрыть окно модального окна и снова открыть его, чтобы выяснить, сохраняет ли я положение, в котором я его последний раз закрывал. Как правило, каждый раз, когда я его открываю, он сбрасывает свиток, но на этот раз этого не происходит.Где правильно разместить скрипт так, чтобы он выполнялся?

 <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> 

Так что я нашел этот сценарий:

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

быть решение на мой ответ, но опять же это не будет работать его. Я отлаживал его и анализировал, что, когда я помещаю его во внешний файл 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> 

Результат:

Result

Решение по DelightedD0D:

Модифицированный скрипт:

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

@ jfriend00 Я не уверен, я понимаю, что вы имеете в виду. Я уже пробовал поставить тег скрипта под модальный. Вы предлагаете, я поместил библиотеку jQuery в раздел главы или? – TheAmazingKnight

+0

Вы действительно пропускаете теги '' в своем коде или это опечатка здесь? – DelightedD0D

+0

Нет, просто опечатка здесь, у меня есть теги тела в реальном коде. – TheAmazingKnight

ответ

1

Это должно заставить вас отсортирован по размещению кода. Не забудьте дать ваш модальный ДИВ идентификатор myModal, текущий HTML не имеет его:

<!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' здесь'}); 'и это было только время, когда оно запускалось, и ничего больше. Я не уверен, что это связано с этим, но глобальная область вернулась 'undefined'. – TheAmazingKnight

+0

Извините, изменил его на '$ (function() {....});', работает сейчас – DelightedD0D

+0

То же самое, я думаю, что это может быть сбой или конфликт с другими библиотеками. Я знаю, что есть решение каждой проблемы, но это самое длинное и все еще не решение. Я до сих пор не понимаю, почему это не пройдет, когда нужно. :( – TheAmazingKnight

Смежные вопросы