2011-11-09 15 views
0

クリックしたときに、「好き」のクラスを持つdivの数が0より大きい場合、そのコードを実行する必要があります。問題がありますボタンはまだコードを実行しません。私は同じ結果に.lengthと.size()の両方を試みたことに注意してください。可変条件が満たされている場合のみjQuery onclick

$(document).ready(function() { 
countlikes = $('[id^=post_].like').length; 
likestatus = 1; 
$('#show_likes').on('click', function() { 
    if (countlikes >0) { 
     likestatus++; 

     $('[id^=post_].like').toggle(); 

     if (likestatus % 2 == 0) { 
      $('#hidelikedbtn').removeClass('hidelikedimgoff').addClass('hidelikedimgon'); 
     } else { 
      $('#hidelikedbtn').removeClass('hidelikedimgon').addClass('hidelikedimgoff'); 
     } 

    return false; 

    } else { 
     return false; 
    } 
}); 
}); 

+0

HTMLはどこですか? – CuriousMind

+1

私はあまりにもしっかりしたセレクタを理解していません。あなたは "好き"というクラスのdivを数えたいと思う。 $( 'div.like')は問題ありません。 "post_"で始まるIDを持つdiv以外のdivに本当に "like"というクラスを割り当てていますか? –

+0

はい私は実際にです。変数がグローバルである場合は、 – Sweepster

答えて

2

現在のカウントではなく元のcountlikesの値を使用してください。ハンドラの中で代入を動かすと、それはうまくいくはずです。 (変数が実際に必要な瞬間に1つの場所で実際に使用されているだけですが、if文で直接$('[id^=post_].like').lengthをテストすることができます)。

また、「1より大きい」とコードでは "> 0"と表示されるため、それが機能していても、あなたが記述したことはしません。

また、最後else場合は、冗長問題とは無関係です:ifあなたはfalseを返し、それ以外にあなたがfalseを返すので、なぜかの外return false;を移動し、それ以外は削除しないの終わりに?

+0

私の質問の矛盾を指摘してくれてありがとう。私はそれを修正しました。私があなたが指摘したことをちょっと試してみて、私の所見を教えてあげましょう。 – Sweepster

+0

変数をハンドラに移動すると問題が解決しました。ありがとう! – Sweepster

0

あなたの 'countlike'変数の前にvarが必要です。

また、他の変数の前に同じことが必要です。クラスは、ページのロード後に変化する「ように」との要素数が、問題はあなたが現在そのたびにハンドラが、それはなり走る、一度だけcountlikesあなたのクリックハンドラを値を割り当てることであると仮定すると

+0

ではありません。 – Sweepster

+0

真実ですが、提示されたコードが関連するコードであると仮定していたので、私はそれに基づいています。それがグローバルであれば、それは問題ではありません。 – Ktash

関連する問題