2012-04-30 15 views
1

このコードは、ボタンをクリックするとチェックボックスをクリアする必要があります。 <form></form>タグを削除すると動作しますが、.find()はすべての子孫を見つけられると思いましたか?jquery .find()not working

<script type="text/javascript"> 
$(document).ready(function(){ 

     var clearCheckboxes = function() {  
     $('.outerbox').find('input').each(function() { 
      $(this).attr('checked', false); 
     }); 
     } 

     $('input.myButton').click(clearCheckboxes); 
}); 
</script> 

<div class="outerbox">  
    <form> 
    <input type="checkbox" checked="" /> checkbox1 
    <input type="checkbox" checked="" /> checkbox2 
    </form>  
</div> 
<input class="myButton" value="clear checkboxes now" type="button"/> 
+3

代わりにそれは明らかに罰金を働いて.ATTR – kinakuta

+2

の.prop使用してみてください - http://jsfiddle.net/gYHKA/ –

+1

が私のために動作します。http:// jsfiddle .net/CgsEu/ –

答えて

2

このコードは、私のために正常に動作します:http://jsfiddle.net/CgsEu/

をとにかく、あなたは最新のjQueryを使用している場合は、.prop.attrを変更してみてください。また.eachは必要ありません。 .attrおよび.propは、jQueryオブジェクトのすべての要素に対して機能します。

var clearCheckboxes = function() {  
    $('.outerbox').find('input').prop('checked', false) 
} 

DEMO:http://jsfiddle.net/CgsEu/1/

他の入力がある場合は、単にチェックボックスに.findを制限してみてください。

var clearCheckboxes = function() {  
    $('.outerbox').find('input:checkbox').prop('checked', false) 
} 

DEMO:http://jsfiddle.net/CgsEu/2/

+1

これは動作し、はるかにきれいです、ありがとう!私は同時にフォームを提出しようとしていたので動作しないと思います:/ – JYX

+0

2番目の考えでは、チェックボックスが子供(1レベル下)のときになぜ機能するのか説明しませんでしたが、どんなアイデアも大歓迎ですが、もしそうでなければ、ああ! – JYX

+0

@ user1199713:あなたのコードが実行される前に '

'提出が起こっている可能性があります。実際の*コードを表示すると、私たちはあなたを助けることができます。これを修正するには、単にe.preventDefault()をハンドラに追加する必要があります。 –

1

それぞれ()を使用する必要はありません、あなたはすでに要素のコレクションを持っているので、同様に、それらのすべてに変更を適用することができますがあり

var clearCheckboxes = function() {  
    $('input', '.outerbox').attr('checked', false); 
} 

$('input.myButton').click(clearCheckboxes); 

FIDDLE

prop()をattr()に使用する方法はたくさんあります。これはおそらく参考になるでしょう。 属性は、例えば、属性 に値がない全く-も、場合に存在する場合、W3C形式の仕様によれば、チェック属性は、対応するプロパティを意味 ブール属性が真である

空の文字列値です。チェックボックスがチェックされているかどうかを決定することが好ましい クロスブラウザ互換の方法は、以下の のいずれかを使用して、要素のプロパティの「truthy」値をチェックする ある:

場合(elem.checked)

後方互換性を維持するために

、中.ATTR()メソッド:

場合($(elemは).prop() "にチェック")

() "にチェック" $(elemは)は(.is)場合 jQuery 1.6.1+があなたのためにプロパティを取得して更新するのでコードはありませんboolean属性のを.prop()に変更する必要があります。 それにもかかわらず、チェックされた値を取得するための好ましい方法はprop()です。

1
$(document).ready(function(){ 
    var clearCheckboxes = function() {  
     $('.outerbox').find('input[type="checkbox"]').each(function(){ 
      $(this).prop('checked', false); 
     }); 
    } 

    $('input.myButton').click(clearCheckboxes); 
});​ 

DEMO.

更新:

$('.outerbox').find('input[type="checkbox"]').prop('checked', false); 

または

$('.outerbox input:checkbox').prop('checked', false); 

DEMO.

0

使用プロップ、例えば

$(this).prop('checked', false); 

代わり場合attr

0
var clearCheckboxes = function() {  
    $('input[type="checkbox"]', '.outerbox').prop('checked', false); 
} 

$('input.myButton').click(clearCheckboxes);