2012-02-05 6 views
0

だからこれは私が持っているコードです:現時点で特定のクラスの画像からクラスを追加/削除するにはどうすればよいですか?

$('.showvideo').click(function(){ // removes 'show' class from all images that aren't 'vid' 
    showAll(); 
    if($('.gallery li img').hasClass('video')){ 
     $('.gallery li img').addClass('show').removeClass('hide'); 
    } 
    else{ 
     $('.gallery li img').addClass('hide').removeClass('show'); 
    } 
}); 

それは2つだけ6のうちのクラスのビデオ」を持っているにもかかわらず、「コンテナ」内のすべての画像にクラスのショー」を追加。どのようにしてクラス 'show'をクラス 'video'を持つ画像だけに追加するのですか?

答えて

0

個々のセレクターにビデオクラスを追加して、このような項目だけを取得することができます。

$('.showvideo').click(function(){ // removes 'show' class from all images that aren't 'vid' 
    showAll(); 
    $('.gallery li img.video').addClass('show').removeClass('hide'); 
    $('.gallery li img').not('.video').addClass('hide').removeClass('show'); 
}); 

それとも、もう少し効率的に:

$('.showvideo').click(function(){ // removes 'show' class from all images that aren't 'vid' 
    showAll(); 
    var $items = $('.gallery li img'); 
    $items.filter('.video').addClass('show').removeClass('hide'); 
    $items.not('.video').addClass('hide').removeClass('show'); 
}); 
+0

恐ろしい!それはあなたに感謝しました:-) –

+0

私は方法で2番目のコードサンプルを使用しました –

0
$('.showvideo').click(function(){ 
    $('.gallery li img') 
     .addClass('hide') 
     .removeClass('show') 
     .filter('.video') 
      .addClass('show') 
      .removeClass('hide'); 
}); 

UPDATE
、より効率的な方法ビデオクラスと仮定するとimgタグ自体にあり、それは次のように動作します読みやすさを維持しながらこれを行う:

+0

賢明ですが、ビデオクラスで多くの画像があった場合、これはたくさんの余分な '.addClass()'と ''をしています。 removeClass() '操作 - 必要な倍のほぼ2倍。 – jfriend00

+0

@ jfriend00:更新された解決策を参照してください。無駄な操作を意味するものではありません。 –

関連する問題