0

私はここで多くの答えを見てきましたが、本当に私を助けてくれるものはありませんでした. 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(); 
    }

誰でも理由を説明できますか?

4

2 に答える 2

1

JQuery.not(selector)は、条件が true でないかどうかをチェックするのではなく、セレクターの基準に一致する要素を選択から削除します。あなたの場合、それはではなく、要素を含まないjqueryオブジェクトを返しますfalse

つまり、.not()は の反対ではありません.is()。それが機能していなかった理由です

http://api.jquery.com/not/

于 2013-03-11T16:45:06.750 に答える
0

ロジックの 2 番目の部分を else ステートメントに含めないのはなぜですか?

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();
} 

else {
   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();


}
});
于 2013-03-11T15:29:19.850 に答える