この例でクリックハンドラが一貫して呼び出されない理由を誰か説明できますか?
たとえば、div の左上半分をクリックしても、カウンターが確実にインクリメントされません。
このブロックから padding-top を削除すると、問題なく動作します。
.click-check:active {
background-color:blue;
padding-top: 25px;
}
さまざまなブラウザでこれをテストしましたが、同じように動作します。
この例でクリックハンドラが一貫して呼び出されない理由を誰か説明できますか?
たとえば、div の左上半分をクリックしても、カウンターが確実にインクリメントされません。
このブロックから padding-top を削除すると、問題なく動作します。
.click-check:active {
background-color:blue;
padding-top: 25px;
}
さまざまなブラウザでこれをテストしましたが、同じように動作します。
コードに2つの問題があります。ここで修正を表示できます:
ボックスの上半分をクリックするときはいつでも、技術的にはをクリックしているのではなく.click-check
、実際にはをクリックしてい.count
ます。この画像は、.count
相対的な位置を示してい.click-check
ます。
jQueryはこれをクリックとしてカウントしますが.click-check
、CSSはカウントしません。数値は増加しますが、CSSの「アクティブ」効果は適用されません。
.count
これを解決するには、 divを削除し、すべてをの中に配置します.click-check
。
2番目の問題はjQueryコードにあります。コードは現在次のようになっています。
$('.click-check').click(function() { $('.count').html(count++); });
count
この行が完了するまで増加しません。これは、最初のクリックは効果がないように見えることを意味します。
この行は増分count
され、ユーザーに表示されます。
$('.click-check').click(function() { $('.click-check').html(++count); });
ここであなたの例に両方の更新を適用しました:
この問題を解決する別の方法は、jQueryを介してすべてを実行することです。これにより、すべての外観とロジックが単一のボックスモデルの解釈に同期されます。
var count=0;
$('.click-check').mousedown(function() {
$('.click-check').addClass("active");
$('.click-check').html(++count);
setTimeout(function(){
$('.click-check').removeClass("active");
}, 50);
});