【问题标题】:How to toggle checkbox states如何切换复选框状态
【发布时间】:2016-07-15 03:27:17
【问题描述】:

选中后我无法取消选中复选框(全部通过 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);
}  

更新

在两个函数中都是同一个对象:

【问题讨论】:

  • 这不是针对同一个元素,在一个你得到下一个元素,另一个是前一个。请注意,您还需要包含 HTML。
  • 不是问题,但是为什么你得到cb作为对DOM元素的引用然后创建一个新的jQuery对象?你可以说$(labelObj).prev().prop('checked', true);
  • @nnnnnn 只是为了测试......我认为我之前的做法是问题所在。
  • 需要分享相关的html以及这些方法的调用方式
  • 它们应该是同一件事 如果 labelObj 正好是一个元素。如果$(labelObj) 可以选择多个元素,那么$(labelObj).next() 也将选择多个元素,因此通过使用[0],您将获得第一个可能不正确的元素。你没有重复的 id 什么的?

标签: javascript jquery checkbox


【解决方案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.
}

它适用于所有复选框。

【讨论】:

  • 这对解决 OP 的问题没有任何帮助,因为他们已经在尝试使用 .prop() 并且他们认为他们选择了正确的元素,但他们什么也没说关于点击或其他事件。此外,函数中的三元运算不会改变实际复选框的状态,它只会改变propState 变量(顺便说一句,使用propState = !propState; 可以更简单地完成)。
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
相关资源
最近更新 更多