私はここで多くの答えを見てきましたが、本当に私を助けてくれるものはありませんでした. jQuery に奇妙な問題があることに気付きました。コードが少し速くて厄介なことに気づきましたが、適切に動作するようになったら整理します。
jQuery('input#use_points').change(function() {
if(jQuery(this).not(':checked')) {
alert('not checked');
jQuery( "#amount" ).val(0);
jQuery( "#pounds" ).val(0);
jQuery(".ui-slider-handle").css({'left': '0'});
jQuery(".points-text").hide();
jQuery(".use-points-labels").hide();
jQuery("#slider-range-max").hide();
jQuery('#updatecart').click();
}
if(jQuery(this).is(':checked')) {
alert('is checked');
jQuery( "#amount" ).val(1);
jQuery( "#pounds" ).val(0.05);
jQuery(".points-text").show();
jQuery(".use-points-labels").show();
jQuery("#slider-range-max").show();
jQuery('#updatecart').click();
}
});
「チェックされていません」と「チェックされています」という 2 つのアラートがあることに気付くでしょう。最初の if ステートメントは期待どおりに機能します。ただし、チェックされていない場合にチェックボックスをクリックすると、両方のステートメントが実行されます。「チェックされていません」というアラートが表示され、その後すぐに「チェックされています」が続きます
ただし、チェックボックスのクリックアクションではなく、変更時にのみ呼び出されるため、これが発生する理由がわかりません。誰か考えはありますか?
前もって感謝します。
/////////////////////////////// 編集 ////////////////// ////////////////////////// 私は自分の質問に答えました。何らかの理由で、このように書くとうまくいきます:
jQuery('input#use_points').change(function() {
if(this.checked) {
alert('is checked');
jQuery( "#amount" ).val(1);
jQuery( "#pounds" ).val(0.05);
jQuery(".points-text").show();
jQuery(".use-points-labels").show();
jQuery("#slider-range-max").show();
jQuery('#updatecart').click();
} else {
alert('not checked');
jQuery( "#amount" ).val(0);
jQuery( "#pounds" ).val(0);
jQuery(".ui-slider-handle").css({'left': '0'});
jQuery(".points-text").hide();
jQuery(".use-points-labels").hide();
jQuery("#slider-range-max").hide();
jQuery('#updatecart').click();
}
誰でも理由を説明できますか?