2014-12-25 3 views
0

Я пытаюсь добавить несколько модальных окон на свою страницу, но не очень хорошо справляюсь с этим. В настоящее время я использую код ниже, и мне нужно будет изменить его, чтобы его можно было использовать с несколькими модалами.Несколько модалов

HTML:

<div class="modal"> 
<div class="overlay"></div> 
    <div class="modal--contents modal--transition"> 
    <a class="modal--close" href="#"><img src="/images/icons/modal/close.png">Close</a> 
    <h2>How to install on Windows</h2> 
    <div class="instructions"> 
     <div class="instructions-single"> 
      <img src="/images/placeholders/step.png" alt="Step 1"> 
      <h3>Step 1</h3> 
      <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
     </div> 
     <div class="instructions-single"> 
      <img src="/images/placeholders/step.png" alt="Step 2"> 
      <h3>Step 2</h3> 
      <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
     </div> 
     <div class="instructions-single"> 
      <img src="/images/placeholders/step.png" alt="Step 3"> 
      <h3>Step 3</h3> 
      <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
     </div> 
    </div> 
    </div> 
</div> 

<a href="javascript:void(0)" class="overlay--trigger btn"><img src="/images/icons/download/help_icon.png" alt="Help">How to install</a> 

JS:

var modal = $('.modal'); 

$(".btn").on("click", function() { 
    $(modal).toggleClass('modal--show'); 
}); 

$(".overlay").on("click", function() { 
    $(modal).toggleClass('modal--show'); 
}); 

$(".modal--close").on("click", function() { 
    $(modal).toggleClass('modal--show'); 
}); 
+6

так, что это проблема? – jmore009

+0

Итак, где кнопка, и как она будет относиться к различным модалам? – adeneo

+0

Я попытался изменить только классы и дублировать код, но модалы не сработали. Как я могу заставить это работать со многими модалами и, возможно, расширяться. – aleksitappura

ответ

1

Если вы используете несколько модальности на одной странице я хотел бы сделать что-то вроде это:

, где когда-либо у вас есть .btn вы хотите, чтобы вызвать определенную модальность, добавьте data-attr к нему так:

<div class="btn" data-modal-type="type1"> 

или

<div class="btn" data-modal-type="type2"> 

, и я хотел бы добавить, может быть, id в то же самое html для каждого модала:

<div class="modal" id="type1"> 

Вы должны нажать этот тип на щелчок и использовать его для запуска ger надлежащий модальный:

$(".btn").click(function(){ 
    var Type = $(this).data("modal-type"); 
    $("#"+Type).toggleClass('modal--show'); 
}); 

Таким образом, вы более конкретно относитесь к модальному запуску.

SAMPLE FIDDLE

Чтобы быть честным, хотя, тем более эффективный способ сделать это мой используя ajax динамически загружать отдельный файл с соответствующей информацией при нажатии кнопки. Таким образом, у вас будет только один модальный скрипт и обмен информацией.

UPDATE

Это то, что я имею в виду на основе с вашего codePen:

CODEPEN

+0

Спасибо! Я совсем не понял, как бы сохранить анимацию и другие вещи. Вы можете проверить этот CodePen? Http: // codepen.io/aleksitappura/pen/bNwowK – aleksitappura

+0

@aleksitappura Я добавил новый CodePen – jmore009

+0

Да, теперь это кажется логичным. Благодарю вас! – aleksitappura

0

Вместо $(modal) использовать modal. везде

var modal = $('.modal'); 
$(".btn").on("click", function() { 
modal.toggleClass('modal--show'); 
}); 

$(".overlay").on("click", function() { 
    modal.toggleClass('modal--show'); 
}); 

$(".modal--close").on("click", function() { 
    modal.toggleClass('modal--show'); 
}); 
+0

Это часть проблемы, но я думаю, что более крупная проблема здесь вызывает модальность, когда на одной странице есть несколько. – jmore009

+0

Да, я хотел бы сделать это так: http://stackoverflow.com/a/17636099/2544086, но я не мог. – aleksitappura