2017-02-17 5 views
1

私はいくつかのwoocommerce divを追加ボタンをクリックして非表示にしていますが、最初のものをクリックすると2番目のウインドウ-info div)。Jquery fadeoutはすべてのDIVSを非表示にします

jQuery(function($) { 
    $('.woocommerce-message').append('<button class="hideme1">x</a>'); 
    $("button.hideme1").click(function() { 
     $(".woocommerce-message").fadeOut("slow"); 
    }); 

}); 

jQuery(function($) { 
    $('.woocommerce-info').append('<button class="hideme2">x</a>'); 
    $("button.hideme2").click(function() { 
     $(".woocommerce-info").fadeOut("slow"); 
    }); 
}); 

私はそれらを一緒に持っていて、それらを分割してボタンの別のクラスを使用してみました。すべてのポインタ?私がこのように自分自身を学びようとしているので、どんな助けにも大いに感謝しています!

編集:これはSatpalロリーのおかげで動作するようです。

jQuery(function($) { 
    $('.woocommerce-message').append('<button class="hideme">x</a>'); 
    $('.woocommerce-info').append('<button class="hideme">x</a>'); 
    $("button.hideme").click(function() { 
     $(this).closest(".woocommerce-message").fadeOut("slow"); 
     $("button.hideme").click(function() { 
      $(".woocommerce-info").fadeOut("slow"); 
     }); 
    }) 
}) 

私のjquery/jsはスクランブルエッグと醜いです!

+1

注 - 両方のコードブロックは1つの –

+0

おかげでマージすることができ、実行します。 –

+0

私は "子供"の要素を閉じるために2回のクリックが必要なので、これは100%働いていないことに注意する必要があります。私は理由を理解しようとしています。 –

答えて

5

.closest()を使用して、現在の要素コンテキストの親要素をターゲットにする必要があります。あなたが別のDOM準備ハンドラを使用する必要はありません

$('.woocommerce-message').append('<button class="hideme1">x</a>'); 
$("button.hideme1").click(function() { 
    $(this).closest(".woocommerce-message").fadeOut("slow"); 
}); 
+0

親切にありがとうございます。これを読むでしょう。元のコードを編集しました(うまくいけば正しいですか?) –

関連する問題