2015-02-19 5 views
0

Я хочу удалить и добавить наложение так часто, как хочу, но я не могу заставить js удалить элемент by js, любые идеи?Удалить элемент, созданный с помощью jQuery

JS Fiddle Example

HTML

<div id="background"></div> 
<button id="open">Open</button> 
<div id="overlay"> 
    <button id="close">Close</button> 
</div> 

JS/JQuery

$(function() { 

    $('#open').click(function() { 

     $('body').append('<div id="overlay"><button id="Close">Close</button></div>'); 

    }); 

    $('#close').click(function(){ 
     $('#overlay').remove(); 
    }); 
}); 

CSS:

#overlay{ 
    padding: 8px; 
    position: fixed; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    background-color: rgba(0, 0, 0, 0.1); 
} 
+0

вы повторяете идентификатор 'overlay' который не является действительным, а не использовать класс –

+0

http://jsfiddle.net/adeneo/msro2hoq/2/ – adeneo

ответ

2

Вам нужно прикрепить обработчик щелкнуть событие $ ('# близко ') еще раз после добавления его в документ.

$(function() { 

    $('#open').click(function() { 

     $('body').append('<div id="overlay"><button id="close">Close</button></div>'); 

     $('#close').click(function(){ 
      $('#overlay').remove(); 
     }); 

    }); 

    $('#close').click(function(){ 
     $('#overlay').remove(); 
    }); 
}); 

После того, как вы нажмете на кнопку «закрыть», у вас больше нет кнопки «закрыть» с прикрепленным приложением. Он удаляется кодом $ ('# overlay'). Remove(). После нажатия кнопки открытия добавлен новый элемент #overlay. Он не содержит обработчики для старого элемента.

Вы можете архивировать цели даже с меньшим количеством кода:

https://jsfiddle.net/IAfanasov/msro2hoq/6/

$(function() { 

    $('#open').click(function() { 
     $('#overlay').show(); 
    }); 

    $('#close').click(function(){ 
     $('#overlay').hide(); 
    }); 
}); 
+0

Yup, что сделал трюк, удивительный! Благодаря! – AlexG

0

Почему бы не просто показать и скрыть его?

$(function() { 

    $('#open').click(function() { 

     $('#overlay').show(); 

    }); 

    $('#close').click(function(){ 
     $('#overlay').hide(); 
    }); 

}); 
+0

, потому что в нем будут размещены только зарегистрированные пользователи. :) – AlexG

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