2011-08-11 6 views
0

クリックすると.authorから.authornewに変更する必要があります。JavascriptまたはJQueryがクラスonclickを変更しますか?

私のhtml:

<div class="meta-info" id="showhide"> 
    <div class="author"></div> 
<div id="author-dropdown" style="display: none;"></div>  

マイスクリプト:

<script> 
$(document).ready(function() { 
    $('#showhide').click(function() { 
    if($('#author-dropdown').css('display') == 'none') { 
     $('#author-dropdown').attr("id","author-dropdown-extended").slideDown(); 
    } else { 
     $('#author-dropdown-extended').attr("id","author-dropdown").slideUp(); 
    } 
    return false; 
    }); 
}); 
</script> 

#showhideが上押しidです。 #author-dropdownはドロップダウンの内容です。今、スクリプトはドロップダウンコンテンツidを変更しますが、私は実際に.authorクラスを.authornewに変更する必要があります。これを行うためにスクリプトをどのように修正する必要がありますか?ありがとう!これはトリックを行う必要があります

$('.author').removeClass('author').addClass('authornew'); 

答えて

6
<script> 
    $(document).ready(function() { 
     $('div#showhide').click(function() { 

      //Check if element with class 'author' exists, if so change it to 'authornew' 
      if ($('div.author').length != 0) 
       $('div.author').removeClass('author').addClass('authornew'); 
      //Check if element with class 'authornew' exists, if so change it to 'author' 
      else if ($('div.authornew').length != 0) 
       $('div.authornew').removeClass('authornew').addClass('author'); 

     }); 
    }); 
</script> 

+0

クラスを変更しますが、2回目のクリックで前のクラスに戻りません。 – funguy

+0

申し訳ありませんが、私はあなたがそれを望んでいたのか分かりませんでした。それに応じて私の答えを編集する。 – Jules

+0

それは助けました。クール! – funguy

1

あなたはaddClassremoveClass jQueryのメソッドを使用することができます!

まずそのクラス著者であなたのdivの著者クラスを削除し、それがそのオブジェクトにクラスauthornewを追加します。

+0

...これをカバーするためにあなたの前の質問への答えに追加しました。 – funguy

2

更新ソリューション:

あなただけ.authorから.authornew.authorクラスを切り替えたいと戻っ.authorclick()イベントにしている場合は、あなたがtoggle()機能を利用することができるはずです。

HTML :

<div class="meta-info" id="showhide">  
    <div class="author">1</div> 
    <div id="author-dropdown" style="display: none;"> 
</div> 

CSS:

.author { background: #000; } 
.authornew { background: #ccc; } 

のjQuery:toggle()

$('#showhide').click(function() { 
    $('div.author').toggleClass('authornew'); 
}); 

の作業例:http://jsfiddle.net/zydJd/

簡単な条件の例は次のようになります。

var obj = $(this); 
if(obj.hasClass('author')){ 
    obj.removeClass('author').addClass('authornew'); 
}else{ 
    obj.removeClass('authornew').addClass('author'); 
} 

どこ$(この)問題のオブジェクトを参照するだろう、すなわち$('.author')

それとも、その後、変更を行うために:

$('.author').removeClass('author').addClass('authornew'); 
+0

クラスを変更しますが、2回目のクリックで前のクラスに戻りません。 – funguy

+0

クラスを切り替える必要があるとは思われませんでした。更新されたソリューション – RobB

1

jQueryのtoggleClassはあまりにも便利です。

$('#author-dropdown').toggleClass("author authornew"); 

これは作者の間でクラスを切り替えて、あなたはそれを呼び出すたびにauthornewます。存在するものを削除し、存在しないものを追加することによって動作します。最初に存在する場合は、呼び出すたびに2つの間で切り替わります。

内部的に、jQueryは渡されたクラス名を文字列で分割して各名前を分離し、渡した各classNameに対してhasClassを行い、trueの場合はtrue、それ以外の場合はremoveClassを行います。

関連する問題