1

私はいくつかの div タグを持っており、jquery (#4 をクリック) で別のタグを作成し、それをフェードインしてから、別のクリックでフェードアウトできるようにしたいと考えています。

<body>
<div id="one">one</div>
<div id="two">two</div>
<div id="four">four</div>
</body>

しかし、コードはすぐに #5 フェードアウトしますが、fadeOut の .on('click') をすべての場所で選択しようとしましたが、fadeIn ('#four') と同じ領域を選択しました。

$(document).ready(function() {
$("#four").on('click',function() {
    var newbox = $('<div id="five">five</div>');
    $(newbox).hide().insertAfter("#four").fadeIn('slow');
    });
})

$(document).ready(function() {
$('body:not(#four)').on('click', function() {
$("#five").fadeOut('slow');
    });
});    

私が間違っているところはありますか?ありがとう、フィリップ

4

3 に答える 3

2
//$("#four").on('click',function() { //the user can creat as many div as he wants
$("#four").one('click',function() { //the user fire this event only once
 var newbox = $('<div id="five">five</div>');
 newbox.on('click', function(){ 
   $(this).fadeOut();
 });
 newbox.hide().insertAfter("#four").fadeIn('slow');
});
})

すでに選択しているため、再度使用する必要はないと宣言newboxした場合。$("<tags>")$(newbox)

他の解決策はdelegate event

$(document).on('click', function(e){
   if($(e.target).attr('id') === 'four') return false;
   $("#five").fadeOut();
});
于 2013-07-19T16:28:45.130 に答える