2016-07-15 100 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

这不是针对相同的元素,在一个你得到下一个元素,另一个是前一个元素。请注意,您还需要包含您的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