2012-09-02 14 views
18

<li>の大きなリストは 'span3'クラスからの幅が与えられています。jQueryがクラスを置き換える

<ul class="thumbnails"> 
    <li class="span3"> 
     <div class="thumbnail"><img src="/images/logos-s/s-001.png" alt="" data-creator="swc"> <span>01</span></div> 
    </li> 
    repeat...40x 
</ul> 

私は、ユーザーがクリックでグリッドのサイズを増減するためのボタン(button#grid-bigger & & button#grid-smaller)を持っています。理想的には、ユーザーは3回クリックすることができ、<li>クラスをspan3からspan4、次にspan12に変更するたびにクリックすることができます。

は、ここではJavaScriptです:

$('#grid-bigger').live('click', function (e) { 
    $('#blob .thumbnails').find('li').each(function(i, ojb) { 
     if ($(this).hasClass('span2')) { 
      $(this).removeClass('span2').addClass('span3'); 
     } 

     if ($(this).hasClass('span3')) { 
      $(this).removeClass('span3').addClass('span4'); 
     } 

     if ($(this).hasClass('span4')) { 
      $(this).removeClass('span4').addClass('span12'); 
     } 
    }); 
}); 

何が起こるかは、代わりにボタン「大きなを作る」とは別のクリックを可能にする、それは一度だけクリックしますと同時にステートメントのうちの2つを実行することです。

提案がありますか?

+3

_live_は推奨されません。 – undefined

答えて

40

あなただけそう、彼らはすべてのために実行されます、else ifを使用する必要があります。

if ($(this).hasClass('span2')) { 
    $(this).removeClass('span2').addClass('span3'); 
} else if ($(this).hasClass('span3')) { 
    $(this).removeClass('span3').addClass('span4'); 
} else if ($(this).hasClass('span4')) { 
    $(this).removeClass('span4').addClass('span12'); 
} 
+1

@eltronお願いします。もしこの答えがあなたを助けたら、チェックマーク "** V **"をマークする時間を取ってください。そうすれば、回答者には15ポイントの報酬が与えられます。 SOverflowへようこそ –

関連する問題