2011-11-21 83 views

回答

618

的Javascript:

// Check 
document.getElementById("checkbox").checked = true; 

// Uncheck 
document.getElementById("checkbox").checked = false; 

的jQuery(1.6+):

// Check 
$("#checkbox").prop("checked", true); 

// Uncheck 
$("#checkbox").prop("checked", false); 

的jQuery(1.5):

// Check 
$("#checkbox").attr("checked", true); 

// Uncheck 
$("#checkbox").attr("checked", false); 
+0

使用.prop似乎不适用于Firefox中的本地托管文件的JQuery 1.11.2。 .attr的确如此。我还没有完全测试。下面是代码:'''personContent.find(“[data-name ='”+ pass.name +“'”)。children('input')。attr('checked',true); ''' –

+2

我们应该用'attr'还是'prop'? – Black

26

检查:

document.getElementById("id-of-checkbox").checked = true; 

以取消:

document.getElementById("id-of-checkbox").checked = false; 
6

我们可以确认微粒的复选框为,

$('id of the checkbox')[0].checked = true 

,并取消通过,

$('id of the checkbox')[0].checked = false 
+1

如果您只选择一个元素,则您确实不需要数组索引。但是,我猜如果你想明确。 haha – Rizowski

+4

@Rizowski你确实需要获取本地html元素的索引 - jQuery对象没有“checked”属性 –

+0

但是我们可能只是在那个时候使用jQuery – damd

69

还未被提及重要行为:

以编程方式设置选中属性,不会触发复选框change事件。

在这拨弄自己看看:
http://jsfiddle.net/fjaeger/L9z9t04p/4/

(小提琴在Chrome 46,Firefox的41和IE 11测试)

click()方法

有一天你可能会发现自己编写代码,依赖于被触发的事件。为了确保事件触发,调用click()方法的复选框的元素,像这样:

document.getElementById('checkbox').click(); 

然而,这种切换复选框的选中状态,而不是将其专门设置为truefalse。请记住,只有当checked属性实际发生更改时,才会触发change事件。

它也适用于jQuery的方法:设置使用propattr属性,不火的change事件。

调用click()方法之前设置checked为特定值

你可以测试checked属性。例如:

function toggle(checked) { 
    var elm = document.getElementById('checkbox'); 
    if (checked != elm.checked) { 
    elm.click(); 
    } 
} 

了解更多关于这里的点击方法:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

+4

这是一个很好的答案,但我个人认为更喜欢触发更改事件,而不是调用click()'elm.dispatchEvent(new Event('change'));' –

+0

@VictorSharovatov为什么您更喜欢触发更改事件? – PeterCo

+0

我只能部分同意 - 许多带有AdBlocks的网页浏览器正在通过虚拟点击()防止DOM(由于来自广告的不需要的操作) – pkolawa

5

我想指出的是,“检查”属性设置为一个非空字符串导致检查框。

所以,如果你设置了“检查”属性“假”,该复选框将被检查。我不得不将该值设置为空字符串,或布尔值,以确保该复选框没有被检查。

+2

这是因为非空字符串被视为真理。 –

2
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.selecctall').click(function (event) { 
      if (this.checked) { 
       $('.checkbox1').each(function() { 
        this.checked = true; 
       }); 
      } else { 
       $('.checkbox1').each(function() { 
        this.checked = false; 
       }); 
      } 
     }); 

    }); 

</script> 
2

试试这个:

//Check 
document.getElementById('checkbox').setAttribute('checked', 'checked'); 

//UnCheck 
document.getElementById('chk').removeAttribute('checked'); 
0
function setCheckboxValue(checkbox,value) { 
    if (checkbox.checked!=value) 
     checkbox.click(); 
} 
相关问题