我找不到问题。为什么当我关闭红色图层并再次单击第一个按钮时,此代码会制作许多“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上会非常有帮助 – 2012-03-27 16:56:52
@Brian它是!点击“这里” – YoniGeek 2012-03-27 16:59:30