2016-07-15 11 views
-2

チェックした後でチェックボックスをオフにすることはできません(すべてJS/Jquery経由)。チェックボックスの状態を切り替える方法

コード:

//Works perfect 
function showL(labelObj) 
{ 
    var cb = $(labelObj).prev()[0]; 
    $(cb).prop('checked', true);  
} 

//Does NOT work 
function hideL(labelObj) 
{ 
    var cb = $(labelObj).next()[0]; 
    //$(cb).attr('checked', false); 
    $(cb).prop('checked', false); 
} 

更新

これは、両方の関数で同じオブジェクトです:
enter image description here

+0

これは同じ要素をターゲットにしていません。次の要素を取得し、もう1つは前の要素を取得します。 HTMLも含めることに注意してください。 –

+1

問題ではありませんが、なぜ 'cb'をDOM要素への参照として取得してから、新しいjQueryオブジェクトを作成していますか? '$(labelObj).prev()。prop( 'checked'、true);' – nnnnnn

+0

@nnnnnnテストのためだけに...私は前にやっていたやり方が問題だと思った。 – PlayHardGoPro

答えて

1

あなただけ行うことができます。

$('input[type="checkbox"]').on('click', function{ 
    var propState = $(this).prop('checked'); // grab the checkbox checked state. 
    propState === true ? propState = false : propState = true; // ternary operation. If box is checked uncheck it. if it is not checked check it. 
} 

すべてのチェックボックスで機能します。

+0

これはOPの問題ではあまり役に立ちません。既に '.prop()'を使用しようとしていて、彼らが正しい要素を選択したと思って、クリックやその他について何も言わなかったイベント。また、関数内の三項演算は実際のチェックボックスの状態を変更しません。ちょうど 'propState'変数を変更するだけです(ちなみに' propState =!propState;で簡単に行うこともできます)。 – nnnnnn

関連する問題