問題が見つかりません。赤いレイヤーを閉じると、最初のボタンをもう一度クリックすると、このコードが「X」ボタンのコピーを何回作成するのですか?なぜこのjqueryコードが「Xボタン」のコピーをたくさん作成するのですか?
私はinit
がちょうど1回実行される適切なコンストラクタのように働いていると思っていましたか?お時間を
http://jsfiddle.net/yoniGeek/mWghr/
ありがとう:
は、ここで問題点を説明するjsfiddleです!
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 it's !! "ここに" klick – YoniGeek