2017-03-21 11 views
0

私は、チェックボックスをリセットするためのjQueryを使用したいです。このトピックのQ/Aを読んで、これを思いつきました:jqueryのチェックボックスのリセット - 一貫性のない操作

<script> 
$(document).ready(function(){ 
    $("#clearall").click(function(){ 
     alert('clearing checkboxes'); 
     $('input:checkbox').attr('checked',false); 
    }); 
}); 
</script> 
<input id="cb1" type="checkbox" checked> 
<input id="cb2" type="checkbox" checked > 
<button id="clearall">Click me</button> 

ロード時に2つのチェックボックスがチェックされて表示されます。ボタンをクリックするとクリアされます。これは予想通りです。予想外のことは、ボックスをチェックしてボタンをクリックすると、チェックボックスがクリアされないということです。 javascriptのエラーや警告は表示されません。私はFirefox、Safari、Chromeの機能をチェックしていますが、3つすべて同じ方法で動作します。すべての試行で起動するアラートを挿入したので、関数は実行されていますが、チェックボックスは最初からリセットされません。誰でも、チェックボックスがユーザーによって設定された場合にクリアされない理由についての洞察を提供できますか?

+0

を使用してみてください。とにかく、このメソッド['removeAttr()'](https://api.jquery.com/removeAttr/)も試してください。今後の校正の目的のために – DontVoteMeDown

+1

@DontVoteMeDownは、使用しない '.removeAttr()':http://stackoverflow.com/questions/6169826/propchecked-false-or-removeattrchecked – Terry

+0

@Terry知って良い、ありがとうございました。 – DontVoteMeDown

答えて

0

ヒント:ブール属性を扱うとき(など、選択、チェックし、無効にするなど)、.prop()を使用して.attr().removeProp()、または.removeAttr()を使用することはありません。なぜですか?これは、thisthisです。

  • .attr().removeAttr():プロパティは動的であり、属性はありません - 彼らは初期値が反映されます。
  • .removeProp()

    注:このようにチェック、無効化、または選択などのネイティブプロパティを削除するremoveProp()を使用しないでください。これにより、プロパティが完全に削除され、一度削除すると、再び要素に追加することはできません。

$(document).ready(function(){ 
 
    $("#clearall").click(function(){ 
 
     $('input:checkbox').prop('checked',false); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="cb1" type="checkbox" checked> 
 
<input id="cb2" type="checkbox" checked > 
 
<button id="clearall">Click me</button>

+0

removeAttr()を使用すると何が問題になりますか? – user7491506

+0

@ user7491506本当にあなたのために私はグーグルにしたいですか? http://stackoverflow.com/questions/6169826/propchecked-false-or-removeattrcheckedとhttp://ejohn.org/blog/jquery-16-and-attr/ – Terry

0

それは私の作品.removeAttr('checked')

関連する問題