Я не могу найти проблему. Почему этот код делает много копий кнопки «X», когда я закрываю красный слой и когда я снова нажимаю первую кнопку?Почему этот код jquery создает много копий «X-button»?
Я думал, что init
работал как правильный конструктор, который запускается только один раз, верно?
Вот jsfiddle, иллюстрирующий проблему:
http://jsfiddle.net/yoniGeek/mWghr/
Спасибо за ваше время!
Y/
HTML-:
<div class="Main">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Phasellus non nisl mauris. Phasellus eget viverra mi.
Curabitur elementum tristique nibh, et faucibus eros
fermentum ut. Pellentesque non nisi augue.
Nulla facilisis ultrices malesuada. Sed bibendum lacus
sed lorem auctor rutrum.
iam semper justo id diam
</p>
<p id="last_child" > Lorem ipsum dolor
sit amet, consectetur adipiscing elit.
Phasellus non nisl mauris. Phasellus eget viverra mi.
Curabitut interdum velit ultricies.
</p>
<div id="layer_on" ></div>
</div>
JQuery-код:
(function(){
$('html').addClass('js');
//var red_layer;
var red_layer = {
red_box: $('#layer_on'),
init: function() {
$('<button></button>', {
text: 'push me'
}).insertAfter('.Main #last_child').on('click', this.show);
},
show: function() {
red_layer.close.call(red_layer.red_box);
red_layer.red_box.show();
},
close: function() {
var $this = $(this);
$('<span class="close">X</span>').prependTo(this).on('click', function() {
$this.hide();
});
}
//anonymous function
}; // red_layer object ends
red_layer.init(); //We call it back (the function)
})();
Ввод этого в jsFiddle будет ОЧЕНЬ полезным –
@Brian это !! klick на «ЗДЕСЬ» – YoniGeek