1

Я хочу построить галерею изображений. Каждое изображение будет представлять собой набор изображений. Я понял, что хорошим решением для этого было бы следующее: каждое изображение запускало бы модальное, а внутри модального я бы поставил карусель, где будут отображаться другие изображения. Но я столкнулся с проблемой, я не могу заставить карусели нормально работать (они встроены в одну строку). Пожалуйста, проверьте jsfiddle для получения дополнительной информации: https://jsfiddle.net/r0ukv00d/4/Как отобразить больше каруселей в одной строке?

<div class="container"> 
    <div class="row"> 
     <div class="col-md-6 col-sm-6 col-xs-12"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg" height="42" width="42" data-toggle="modal" data-target="#myModal"><h5> 
     Click on the image and you will be able to see images from Iceland. 
     </h5> 
      <div id="myModal" class="modal fade"> 
       <div class="modal-dialog"> 
        <div class="modal-content"> 
         <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         </div> 
         <div class="modal-body"> 
          <!-- Modal content--> 
          <div id="carousel-1" class="carousel slide" data-ride="carousel"> 
           <!-- Indicators --> 
           <ol class="carousel-indicators"> 
            <li data-target="#carousel-1" data-slide-to="0" class="active"></li> 
            <li data-target="#carousel-1" data-slide-to="1"></li> 
            <li data-target="#carousel-1" data-slide-to="2"></li> 
           </ol> 
           <!-- Wrapper for slides --> 
           <div class="carousel-inner" role="listbox"> 
            <div class="item active"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg" alt="..."> 
             <div class="carousel-caption"> Iceland1 </div> 
            </div> 
            <div class="item"> <img src="http://www.icelandprocruises.co.uk/media/img/gallery/home/0002-gallery-iceland-waterfall-1.jpg" alt="..."> 
             <div class="carousel-caption">Iceland2 </div> 
            </div> 
            <div class="item"> <img src="http://querzy.com/wp-content/uploads/2016/06/iceland.jpg" alt="..."> 
             <div class="carousel-caption"> Iceland3 </div> 
            </div> 
           </div> 
           <!-- Controls --> 
           <a class="left carousel-control" href="#carousel-1" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> 
           <a class="right carousel-control" href="#carousel-1" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> 
          </div> 
         </div> 
        </div> 
        <!-- /.modal-content --> 
       </div> 
       <!-- /.modal-dialog --> 
      </div> 
      <!-- /.modal --> 
     </div> 
     <div class="col-md-6 col-sm-6 col-xs-12"> <img src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg" height="42" width="42" data-toggle="modal" data-target="#myModal"> 
     <h5> 
     Click on the image and you will be able to see images from Brazil. 
     </h5> 
     <h3 style="color:red"> 
     Second carousel is not working! It shows pictures from Iceland instead of Brazil! 
     </h3> 
      <div id="myModal" class="modal fade"> 
       <div class="modal-dialog"> 
        <div class="modal-content"> 
         <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         </div> 
         <div class="modal-body"> 
          <!-- Modal content--> 
          <div id="carousel-2" class="carousel slide" data-ride="carousel"> 
           <!-- Indicators --> 
           <ol class="carousel-indicators"> 
            <li data-target="#carousel-2" data-slide-to="0" class="active"></li> 
            <li data-target="#carousel-2" data-slide-to="1"></li> 
            <li data-target="#carousel-2" data-slide-to="2"></li> 
           </ol> 
           <!-- Wrapper for slides --> 
           <div class="carousel-inner" role="listbox"> 
            <div class="item active"> <img src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg" alt="..."> 
             <div class="carousel-caption"> Brazil1 </div> 
            </div> 
            <div class="item"> <img src="http://www.sportiputovanja.hr/wp-content/uploads/2016/12/RIO-BEACH.jpg" alt="..."> 
             <div class="carousel-caption"> Brazil2 </div> 
            </div> 
            <div class="item"> <img src="http://riotimesonline.com/wp-content/uploads/2014/01/Fernando-Maia-Riotur.png" alt="..."> 
             <div class="carousel-caption"> Brazil3 </div> 
            </div> 
           </div> 
           <!-- Controls --> 
           <a class="left carousel-control" href="#carousel-2" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> 
           <a class="right carousel-control" href="#carousel-2" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> 
          </div> 
         </div> 
        </div> 
        <!-- /.modal-content --> 
       </div> 
       <!-- /.modal-dialog --> 
      </div> 
      <!-- /.modal --> 
     </div> 
    </div> 
</div> 

ответ

1

Ниже приводится современный способ сделать это. Вы можете обратиться к this link за дополнительной информацией о способе динамического создания модально. Else тогда, что код javascript в message или msg сделан мной, чтобы динамически генерировать все, чтобы, если вы сохранили все в базе данных, вам просто нужно создать аналогичный json и проанализировать его здесь, и все готово. Добавление и удаление изображений, страна также будет легкой, также будет легко.

var countryjson={ 
 
\t \t \t 
 
\t \t \t list : [ 
 
\t \t \t \t { 
 
\t \t \t \t \t name : 'Iceland', 
 
\t \t \t \t \t img_path : 'https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg', 
 
\t \t \t \t \t otherimages : [ 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 1st image of iceland and this is its caption', 
 
\t \t \t \t \t \t }, 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'http://www.icelandprocruises.co.uk/media/img/gallery/home/0002-gallery-iceland-waterfall-1.jpg', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 2nd image of iceland and this is its caption', 
 
\t \t \t \t \t \t }, 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'http://querzy.com/wp-content/uploads/2016/06/iceland.jpg', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 3rd image of iceland and this is its caption', 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t ] 
 
\t \t \t \t }, 
 
\t \t \t \t { 
 
\t \t \t \t \t name : 'Brazil', 
 
\t \t \t \t \t img_path : 'https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg', 
 
\t \t \t \t \t otherimages : [ 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 1st image of iceland and this is its caption', 
 
\t \t \t \t \t \t }, 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'http://www.sportiputovanja.hr/wp-content/uploads/2016/12/RIO-BEACH.jpg', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 2nd image of iceland and this is its caption', 
 
\t \t \t \t \t \t }, 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t image_path : 'http://riotimesonline.com/wp-content/uploads/2014/01/Fernando-Maia-Riotur.png', 
 
\t \t \t \t \t \t \t image_title: 'Title goes here.', 
 
\t \t \t \t \t \t \t image_caption : 'This is 3rd image of iceland and this is its caption', 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t ] 
 
\t \t \t \t } 
 
\t \t \t ] 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t function loadCountries() 
 
\t \t { 
 
\t \t 
 
\t \t \t for(i=0;i<countryjson.list.length;i++) 
 
\t \t \t { 
 
\t \t \t \t var countrybean=countryjson.list[i]; 
 
\t \t \t \t 
 
\t \t \t \t var msg=''; 
 
\t \t \t \t msg+='<div class="col-sm-3">'; 
 
\t \t \t \t msg+=' \t <div class="panel panel-default" onclick="showModal('+i+')">'; 
 
\t \t \t \t msg+=' \t \t <div class="panel-body">'; 
 
\t \t \t \t msg+=' \t \t \t <img src="'+countrybean.img_path+'" class="adjust-img" alt="'+countrybean.name+' Image">'; 
 
\t \t \t \t msg+=' \t \t </div>'; 
 
\t \t \t \t msg+=' \t \t <div class="panel-footer" align="center">'+countrybean.name+'</div>'; 
 
\t \t \t \t msg+=' \t </div>'; 
 
\t \t \t \t msg+='</div>'; 
 
\t \t \t \t 
 
\t \t \t \t $('#country_list').append(msg); 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t function showModal(country_id){ 
 
\t \t 
 
\t \t \t BootstrapDialog.show({ 
 
\t \t \t \t title: 'Other images of '+countryjson.list[country_id].name, 
 
\t \t \t \t message: function(dialog) { 
 
\t \t \t \t \t 
 
\t \t \t \t \t var message =''; 
 
\t \t \t \t \t var ol_list=''; 
 
\t \t \t \t \t var image_list=''; 
 
\t \t \t \t \t var corosol_id='myCarousel_'+country_id; 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t var countrybean=countryjson.list[country_id]; 
 
\t \t \t \t \t 
 
\t \t \t \t \t for(i=0;i<countrybean.otherimages.length;i++) 
 
\t \t \t \t \t { 
 
\t \t \t \t \t \t var imagebean=countrybean.otherimages[i]; 
 
\t \t \t \t \t \t ol_list+='<li data-target="#'+corosol_id+'" data-slide-to="'+i+'" '+ (i==0?'class="active"':'') +'></li>'; 
 
\t \t \t \t \t \t image_list+='<div class="item '+ (i==0?'active':'') +'">'; 
 
\t \t \t \t \t \t image_list+=' \t <img src="'+imagebean.image_path+'" alt="'+imagebean.image_title+'" >'; 
 
\t \t \t \t \t \t image_list+=' \t <div class="carousel-caption">'; 
 
\t \t \t \t \t \t image_list+=' \t \t <h3>'+imagebean.image_title+'</h3>'; 
 
\t \t \t \t \t \t image_list+=' \t \t <p>'+imagebean.image_caption+'</p>'; 
 
\t \t \t \t \t \t image_list+=' \t </div>'; 
 
\t \t \t \t \t \t image_list+='</div>'; 
 
\t \t \t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t \t \t message+='<div id="'+corosol_id+'" class="carousel slide" data-ride="carousel">'; 
 
\t \t \t \t \t message+=' \t <!-- Indicators -->'; 
 
\t \t \t \t \t message+=' \t <ol class="carousel-indicators">'+ol_list+'</ol>'; 
 
\t \t \t \t \t 
 
\t \t \t \t \t message+=' \t <!-- Wrapper for slides -->'; 
 
\t \t \t \t \t message+=' \t <div class="carousel-inner" role="listbox">'+image_list+'</div>'; 
 
\t \t \t \t \t 
 
\t \t \t \t \t message+=' \t <!-- Left and right controls -->'; 
 
\t \t \t \t \t message+=' \t <a class="left carousel-control" href="#'+corosol_id+'" role="button" data-slide="prev">'; 
 
\t \t \t \t \t message+=' \t \t <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>'; 
 
\t \t \t \t \t message+=' \t \t <span class="sr-only">Previous</span>'; 
 
\t \t \t \t \t message+=' \t </a>'; 
 
\t \t \t \t \t message+=' \t <a class="right carousel-control" href="#'+corosol_id+'" role="button" data-slide="next">'; 
 
\t \t \t \t \t message+=' \t \t <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>'; 
 
\t \t \t \t \t message+=' \t \t <span class="sr-only">Next</span>'; 
 
\t \t \t \t \t message+=' \t </a>'; 
 
\t \t \t \t \t message+='</div>'; 
 
\t \t \t \t \t 
 
\t \t \t \t \t return message; 
 
\t \t \t \t } 
 
\t \t \t }); 
 
\t \t 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t $(document).ready(function(){ 
 
\t \t \t loadCountries(); 
 
\t \t });
.adjust-img 
 
\t \t { 
 
\t \t \t width : 100%; 
 
\t \t \t height : 300px; 
 
\t \t }
<!-- Latest compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/css/bootstrap-dialog.min.css"> 
 

 
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> 
 

 

 
<!-- jQuery library --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

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

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/js/bootstrap-dialog.min.js"></script> 
 

 

 
<div class="container-fluid"> 
 
\t \t <div clas="rows" id="country_list"> 
 
\t \t </div> 
 
\t </div>

+0

Это очень аккуратно! Большое вам спасибо за повторное воспроизведение, так как проблема с базой данных будет моим следующим вопросом. Я попытаюсь реализовать его вот так! –

2

Вы вызываете ту же модель ID для обоих изображений. Пожалуйста, см. https://jsfiddle.net/r0ukv00d/5/ для обновленного кода

<div class="container"> 
    <div class="row"> 
     <div class="col-md-6 col-sm-6 col-xs-12"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg" height="42" width="42" data-toggle="modal" data-target="#myModal"><h5> 
     Click on the image and you will be able to see images from Iceland. 
     </h5> 
      <div id="myModal" class="modal fade"> 
       <div class="modal-dialog"> 
        <div class="modal-content"> 
         <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         </div> 
         <div class="modal-body"> 
          <!-- Modal content--> 
          <div id="carousel-1" class="carousel slide" data-ride="carousel"> 
           <!-- Indicators --> 
           <ol class="carousel-indicators"> 
            <li data-target="#carousel-1" data-slide-to="0" class="active"></li> 
            <li data-target="#carousel-1" data-slide-to="1"></li> 
            <li data-target="#carousel-1" data-slide-to="2"></li> 
           </ol> 
           <!-- Wrapper for slides --> 
           <div class="carousel-inner" role="listbox"> 
            <div class="item active"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/8e/Eyjafjallaj%C3%B6kull.jpeg" alt="..."> 
             <div class="carousel-caption"> Iceland1 </div> 
            </div> 
            <div class="item"> <img src="http://www.icelandprocruises.co.uk/media/img/gallery/home/0002-gallery-iceland-waterfall-1.jpg" alt="..."> 
             <div class="carousel-caption">Iceland2 </div> 
            </div> 
            <div class="item"> <img src="http://querzy.com/wp-content/uploads/2016/06/iceland.jpg" alt="..."> 
             <div class="carousel-caption"> Iceland3 </div> 
            </div> 
           </div> 
           <!-- Controls --> 
           <a class="left carousel-control" href="#carousel-1" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> 
           <a class="right carousel-control" href="#carousel-1" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> 
          </div> 
         </div> 
        </div> 
        <!-- /.modal-content --> 
       </div> 
       <!-- /.modal-dialog --> 
      </div> 
      <!-- /.modal --> 
     </div> 
     <div class="col-md-6 col-sm-6 col-xs-12"> <img src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg" height="42" width="42" data-toggle="modal" data-target="#myModal1"> 
     <h5> 
     Click on the image and you will be able to see images from Brazil. 
     </h5> 
     <h3 style="color:red"> 
     Second carousel is not working! It shows pictures from Iceland instead of Brazil! 
     </h3> 
      <div id="myModal1" class="modal fade"> 
       <div class="modal-dialog"> 
        <div class="modal-content"> 
         <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         </div> 
         <div class="modal-body"> 
          <!-- Modal content--> 
          <div id="carousel-2" class="carousel slide" data-ride="carousel"> 
           <!-- Indicators --> 
           <ol class="carousel-indicators"> 
            <li data-target="#carousel-2" data-slide-to="0" class="active"></li> 
            <li data-target="#carousel-2" data-slide-to="1"></li> 
            <li data-target="#carousel-2" data-slide-to="2"></li> 
           </ol> 
           <!-- Wrapper for slides --> 
           <div class="carousel-inner" role="listbox"> 
            <div class="item active"> <img src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16674/SITours/private-sugar-loaf-and-christ-the-redeemer-tour-in-rio-de-janeiro-278478.jpg" alt="..."> 
             <div class="carousel-caption"> Brazil1 </div> 
            </div> 
            <div class="item"> <img src="http://www.sportiputovanja.hr/wp-content/uploads/2016/12/RIO-BEACH.jpg" alt="..."> 
             <div class="carousel-caption"> Brazil2 </div> 
            </div> 
            <div class="item"> <img src="http://riotimesonline.com/wp-content/uploads/2014/01/Fernando-Maia-Riotur.png" alt="..."> 
             <div class="carousel-caption"> Brazil3 </div> 
            </div> 
           </div> 
           <!-- Controls --> 
           <a class="left carousel-control" href="#carousel-2" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> 
           <a class="right carousel-control" href="#carousel-2" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> 
          </div> 
         </div> 
        </div> 
        <!-- /.modal-content --> 
       </div> 
       <!-- /.modal-dialog --> 
      </div> 
      <!-- /.modal --> 
     </div> 
    </div> 
</div> 

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

  • Нет связанных вопросов^_^