2016-08-18 14 views
0

オンロードを非表示にしてdata-idpがクリックされたときに切り替えるスクリプトがあります。今すぐこのスクリプトは、.wc-galleryを最初に切り替えたときにのみ機能します。 hide()に戻すと、それは動作しません。データID経由で切り替えることはできません

私はHTML内に複数の.gallery-container2を宣言しています。現在有効なものがある場合は正常に動作しますが、他の.gallery-container2から別のpをクリックすると、がhide()に変わり、最近クリックされたものがshow()になります。

HTML:

<div class="gallery-container2"> 
    <p data-id="1723"><strong>View before and after</strong></p> 
    <div class="gallery-item" data-id="1723"> 
     <div class="wc-gallery" style="display: none;"></div> 
    </div> 
</div> 

SCRIPT:あなたはそれを渡しているように、それは述語を取らないよう

$(window).load(function() { 
     $(".gallery-container2 .gallery-item .wc-gallery").hide(); 
    }); 
    $(".gallery-container2 p").click(function() { 
     var id = $(this).data('id'); 
     $(".gallery-container2").find('.gallery-item').each(function() { 
      $(this).find('.wc-gallery').toggle($(this).data('id') === id); 
     }); 
    }); 
+0

あなたのセレクタを反復処理する必要はありませんようhttp://api.jquery.com/toggle/これは '$は、(」。ギャラリーにcontainer2" )。(『ギャラリーアイテム』)を見つけるには、'、おそらくあるだけでなく、より効率的になりますページにそのクラスの要素が複数あると指定してから十分に具体的ではありません。すでに見つかったid値を使ってdata-id属性を選択してください – ken4z

+0

私は '$(this) '.gallery-container2 p'を使用しているので、これは動作しませんが、スクリプトにいくつかの追加構造を追加して追加すると助けになるでしょう? – MIke

+0

申し訳ありませんが、あなたは正しいです。 toggle() ' – ken4z

答えて

0

はトグルの定義をチェックしてください。あなたは、各.gallery-item

$(".gallery-container2 p").click(function() { 
    var id = $(this).data('id'); 
    $("[data-id=" + id + "].gallery-item .wc-gallery").toggle() 
}); 
関連する問題