2012-03-05 3 views
0

のクラスを変更しました。いくつかのjQueryを呼び出す<span>ボタンがあります。それを無効にする方法が必要です(可能であれば、対応する上/下ボタン)。

<div class='RateBar'> 
    <span class='RateTotal'>0</span><br /> 
    <span class='RateUp'> +0</span> 
    <span class='RateDown'> -0</span> 
</div> 

を次のようにこの瞬間のために働く

$('.RateDown').click(function() { 

    //down counter 
    var downValue = parseInt($(this).text()); 
    downValue--; 
    $(this).text(downValue); 

    //total counter 
    var totalValueElement = $(this).prevAll('.RateTotal').first(); 
    var totalValue = parseInt(totalValueElement.text()); 
    totalValue--; 
    totalValueElement.text(totalValue); 
}); 

(そしてRateUpための同様のもの)

し、関連するHTMLが、私のようなボタンのイベントハンドラを作ってきました誰でもボタンを繰り返し迷惑メールにすることができるので、クラスを「定格」に変更すると、クリック可能ではないと考えていました。私は.attr()機能を使用しようとしましたが、これは成功しません。この方法で、または他の方法でそれを無効にすることは可能ですか?私は、無効なブール値で周りを回って、クリックでそれを変えましたが、ページ上の複数のボタンでは、これは実用的ではありません。

(ボタンは現在hereある)

+0

'$(this).addClass( 'rated')'または$(this).prevAll( '。RateTotal').AddClass( 'rated') ' –

+0

あなたは' .addClass() '/ '.removeClass()'/'.toggleClass()'? – jrummell

+1

基数なしで 'parseInt'を使うたびに、Doug Crockfordはかわいいティーカップの子豚を溺死させます。 'parseInt('07 ')== 7、parseInt('09')= 9、parseInt( '010')= 8'です。代わりに 'parseInt($(this).text()、10)' – nickf

答えて

2

クリックイベントにjQueryの.oneを使用する - それは一度だけバインドします。 - http://api.jquery.com/one/

0

あなたは、クラスを追加し、クリックハンドラ削除することができます。他のボタンの

$(this).addClass("disabled").off("click"); 

と同様に:

$(this).siblings(".RateUp").addClass("disabled").off("click"); 

注:offは前回のために、1.7で追加されましたバージョンは、unbindを使用してください。

0

あなたは、いくつかのオプションだ:

$(this).attr('class','rated'); 

これは、定格ためにあなたのクラスを変更するだろうし、それによってスパンがクリック可能ではありませんが。

別の、多分よりよい解決策は次のようになります。

$(this).unbind('click'); 

今スパンはもうクリックできないですが、クラスとどんなスタイル、それに縛られ、それを保持します。