Почему на мобильном телефоне jQuery не работает прокрутка всплывающих окон? - PullRequest
1 голос
/ 01 августа 2020

Я использую jquery .mobile-1.4.5 . В моем случае прокрутка не работает в моих приложениях.

Этот код является моим индексом. html для данных, которые я получаю из JSON моего веб-сервиса.

<div role="main" class="ui-content">
  <div data-role="popup" id="popupBasic" data-transition="slideup" style="height: 500px;">
    <div data-role="header" style="background: none;">
      <h1 class="poppinmedium" style="font-size:14px;">Detail Information</h1>
    </div>
    <div class="content">
      <div class=" img-responsive" id="img-container" style="text-align: center;"></div>
      <h4 id="poi-detail-title" class="poppinmedium" style="text-align: center;"></h4>
      <!-- <h4 style="text-align: center;" class="poppinthin">Distance:
          <span id="poi-detail-distance" class="poppinthin"></span>
      </h4> -->
      <h4 id="poi-detail-description" class="poppinthin"></h4>
    </div>
  </div>
</div>

Вот код CSS для моего всплывающего окна.

.ui-popup-container {
  z-index: 1000;
  display: inline-block;
  position: absolute;
  /* background: #fff; */
  padding: 0;
  outline: 0;
  /* overflow: auto; */
  max-width: 100% !important;
  top: auto !important;
  bottom: 0 !important;
  left: 0 !important;
  width: 100%;
}

.ui-popup {
  border-radius: 20px 20px 0px 0px;
  padding-bottom: 8px;
  padding-left: 8px;
  padding-right: 8px;
  padding-top: 10px;
}

Вот код для открытия всплывающего окна и его прокрутки. Но не работает:

$('#popupBasic').popup('open');
$('#popupBasic').on({
  popupafteropen: function() {
    var maxHeight = 400;
    $('#popupBasic').css('max-height', maxHeight + 'px');
    $('#popupBasic').css('overflow', 'auto');
  }
});

1 Ответ

0 голосов
/ 02 августа 2020

Зачем вам это z-index? JQM уже устанавливает собственный z-index. Например, оверлей всплывающего экрана (который захватывает клики за пределами всплывающего окна) имеет z-index 1099, а контейнер всплывающего окна (используемый для границ и кнопок закрытия по умолчанию) имеет z-index 1100.

Если вам нужно всплывающее окно с автоматически прокручиваемым содержимым, установите overflow содержимого всплывающего окна.

ДЕМО:

$(function(){
  var longText = ['<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>',
    '<p>Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. </p>',
    '<p>Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. </p>'
    ].join('');

  $('#popupBasic').on({
    popupafteropen: function() {
      var maxHeight = 400;
      $('#popupBasic .ui-content').css({
        'max-height': maxHeight + 'px',
        'overflow': 'auto'});
      setTimeout(function(){ 
        $("#popupBasic .ui-content").html(longText);
      }, 1000);
    },
    popupafterclose: function() {
      $("#popupBasic .ui-content").html("");
    }
  });
});
/* 12 px is the JQM default blur for box-shadows */
.ui-popup-container {
  max-width: 100% !important;
  top: auto !important;
  bottom: 12px !important;
  left: 12px !important;
  right: 12px !important;
}
<!DOCTYPE html>
<html>
  <head>
    <title>Scrollable Popup</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
    <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.css" />
    <script src="https://code.jquery.com/jquery-1.11.2.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.js"></script>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header">
        <h1>Scroll Popup</h1>
        <a href="#popupBasic" data-rel="popup" class="ui-btn ui-corner-all ui-shadow ui-btn-a ui-icon-gear ui-btn-icon-notext ui-btn-right">Open</a>        
      </div>
      <div role="main" class="ui-content"></div>
      <div id='popupBasic' data-role='popup' data-transition="slideup" data-history="false" style="height: 500px;">
        <div data-role="header" class="ui-bar ui-bar-inherit" style="background: none;">
          <h1 style="font-size:14px;">Detail Information</h1>
          <a href="" data-rel="back" class="ui-btn ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a>
        </div>
        <div class="ui-content"></div>
      </div>
    </div>
  </body>
</html>
...