2016-11-23 9 views
1

誰でも簡単にこのコードスニペットを手助けできますか?私は、さまざまなセレクタ(ループのような音ですが、どのように行うのか分かりません)で同じコードを繰り返す代わりに、コードの行を少なく書くことができるようにしたいと考えています。複数のセレクタで非表示/表示すると、クリックしたときに個別に表示されます

複数のクラスをカンマで区切って表示すると、非表示のコンテンツが個別に表示されないという問題があります。

$(document).ready(function(){ 


//hide show toggle Latest 

$(".more-text-latest, .more-text-latest-2").hide(); 

$(".read-more-latest").click(function(event){ 
event.preventDefault(); 
$(".more-text-latest").slideToggle(600); 
     $(this).toggleClass(".more-text-latest"); 
    }); 

$(".read-more-latest-2").click(function(){ 
$(".more-text-latest-2").slideToggle(600); 
     $(this).toggleClass(".more-text-latest-2"); 
    }); 
+1

が、これはJavaScriptの専用アプリですかあなたはいくつかの例のHTMLを持っていますか? –

+0

私はこれを構築しています:http://codepen.io/dhouglasc/pen/vymMxL - それはちょうどいくつかのコーディングを持つシンプルなウェブサイトです。 –

答えて

0

あなただけがそれを達成するために、いくつかの方法は、例えば、同じことをループする場合:

$(document).ready(function() { 
    //hide show toggle Latest 
    [ 
     '.read-more-latest', 
     '.read-more-latest-2' 
    ].forEach(function (selector) { 
     var moreTextSelector = selector.replace('read-more', 'more-text'); 
     $(moreTextSelector).hide(); 

     $(selector).click(function (e) { 
      e.preventDefault(); 

      $(moreTextSelector).slideToggle(600); 
      $(this).toggleClass(moreTextSelector); 

      if ($(this).hasClass(moreTextSelector)) { 
       $(this).html('Return'); 
      } 
      else { 
       $(this).html('Read More'); 
      } 
     }); 
    }); 
}); 
+0

これは美しく動作します!私はコードを私のプロジェクトの残りの部分に再適用します。しかしそれはまだ私にとっては少し複雑です。特に、あなたがデフォルトを防ぐためにイベントを呼び出す部分。 -1と-2がどこから来たのか理解できますか?私はまだイベントを勉強していません。 ありがとう、HYDDAN! –

+0

ps。 READ MOREを変更して、それがクリックされたらRETURNと言ったり、その逆にしたければどうなりますか?それをループに追加できますか?それとも別のブロックを作りましたか? –

+0

-1の行は、if文の省略形です。&&の左側がtrueの場合は&&の右側が実行され、それ以外の場合は実行されません。あなたのサンプルコードでは '.read-more-latest'のハンドラでpreventDefault()を呼び出しましたが、 '.read-more-latest-2'のハンドラではないので、indexOfは文字列 '-2'が存在するかどうかを確認しますセレクタが存在しない場合、indexOfは-1を返し、preventDefault()が呼び出されます。 それにかかわらず、私はあなたがその行を必要としないと信じて、それを完全に削除することができます。 – Hyddan

関連する問題