2015-12-23 2 views
0

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

Желательно, чтобы, когда элемент имеет идентификатор «popup», я восстановился с использованием значения элемента данных jQuery.

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

Как сделать, чтобы все всплывающие окна и идентификатор отображения соответствовали значению с элементом данных?

<div id="boxpop"> 
 
    <div class="centered"> 
 
    <span></span> 
 
    <div class="close-btn"></div> 
 
    </div> 
 
</div> 
 
<div id="login" style="display:none;"> 
 
    Test div 
 
</div> 
 

 
<header> 
 
    <div id="MainHeader"> 
 
    <div class="logo"></div> 
 
    <nav id="Menu"> 
 
     <li> 
 
     <span class="icon"></span> 
 
     <span class="text"><a href="#" id="popup" data-item="login">Click me!</a></span> 
 
     </li> 
 

 
     <li> 
 
     <span class="icon icone card"></span> 
 
     <span class="text"><a href="" id="popup" data-item="test">Shop info</a></span> 
 
     </li> 
 
    </nav> 
 
    </div> 
 
</header> 
 

 
<script type="text/javascript"> 
 
    $("#popup").click(function() { 
 
    a = $("#popup").data("item"); 
 
    alert(a); 
 

 
    }); 
 

 
    function demo(div) { 
 
     $("#boxpop").fadeIn(500); 
 
     $("#boxpop .centered span").empty(); 
 
     $(div).insertAfter("#boxpop .centered span").fadeIn(100); 
 
    } 
 
</script> 
 

ответ

0

идентификатор должен быть уникальным.

Вы должны использовать класс для этого, это правильный путь:

 <li> 
     <span class="icon"></span> 
     <span class="text"><a href="#" class="popup" data-item="login">Click me!</a></span> 
     </li> 

     <li> 
     <span class="icon icone card"></span> 
     <span class="text"><a href="" class="popup" data-item="test">Shop info</a></span> 
     </li> 

А потом ...

$(".popup").click(function() { 
    a = $(this).data("item"); 
    alert(a); 
}); 

Надеется, что это помогает.

+0

Другой маленький вопрос, у вас есть простое решение применить, чтобы заменить свою функцию «демо», я хотел бы избежать применять каждый раз, когда OnClick у меня есть, что понятия в js/jQuery Я еще не освоил все^^ ' Спасибо – Darkh

+0

Где вызывается ваша демо-функция? Я не видел. –

+0

Я просто переделал свою работу, я просто волнуюсь, div «стеки», например, если я покажу первый и второй div, оба будут отображаться в то время как я, что faudrais один, мой текущий код: – Darkh

0

Это потому, что не может иметь несколько элементов с одним и тем же атрибутом id в том же документе - это недопустимый HTML. Вместо этого вы должны использовать классы. Оттуда вы можете использовать ключевое слово в обработчике кликов, чтобы ссылаться на элемент, который поднял событие, и прочитать атрибут data. Попробуйте это:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="boxpop"> 
 
    <div class="centered"> 
 
    <span></span> 
 
    <div class="close-btn"></div> 
 
    </div> 
 
</div> 
 
<div id="login" style="display:none;"> 
 
    Test div 
 
</div> 
 

 
<header> 
 
    <div id="MainHeader"> 
 
    <div class="logo"></div> 
 
    <nav id="Menu"> 
 
     <li> 
 
     <span class="icon"></span> 
 
     <span class="text"><a href="#" class="popup" data-item="login">Click me!</a></span> 
 
     </li> 
 

 
     <li> 
 
     <span class="icon icone card"></span> 
 
     <span class="text"><a href="" class="popup" data-item="test">Shop info</a></span> 
 
     </li> 
 
    </nav> 
 
    </div> 
 
</header> 
 

 
<script type="text/javascript"> 
 
    $(".popup").click(function() { 
 
    a = $(this).data("item"); 
 
    alert(a); 
 
    }); 
 

 
    function demo(div) { 
 
    $("#boxpop").fadeIn(500); 
 
    $("#boxpop .centered span").empty(); 
 
    $(div).insertAfter("#boxpop .centered span").fadeIn(100); 
 
    } 
 
</script>

+0

Спасибо вам, я был хорошо осведомлен о том, что идентификатор уникален, я также пытался с классом, но без успеха, $ (this), чтобы решить мою проблему, спасибо вам обоим! :) – Darkh