设置“选中” 用于 jQuery 的复选框
我想做这样的事情来使用jQuery勾选复选框
:
$(".myCheckBox").checked(true);
或者
$(".myCheckBox").selected(true);
这样的事情存在吗?
I'd like to do something like this to tick a checkbox
using jQuery:
$(".myCheckBox").checked(true);
or
$(".myCheckBox").selected(true);
Does such a thing exist?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
现代 jQuery
使用
.prop()
:DOM API
如果您正在使用只有一个元素,您始终可以访问底层
HTMLInputElement
并修改其.checked
属性:使用
.prop()
和.attr()
方法代替此方法的好处是它们将对所有匹配的元素进行操作。jQuery 1.5.x 及以下
版本
.prop()
方法不可用,因此需要使用.attr()
。请注意,这是 jQuery 单元测试使用的方法在版本 1.6 之前,优于使用
$('.myCheckbox').removeAttr('checked');
因为如果最初选中该框,后者会更改行为调用.reset()
在任何包含它的表单上 – 一种微妙但可能不受欢迎的行为变化。有关更多上下文,可以在 版本 1.6 发行说明 和 的属性与属性部分href="https://api.jquery.com/prop" rel="noreferrer">
.prop()
文档。Modern jQuery
Use
.prop()
:DOM API
If you're working with just one element, you can always just access the underlying
HTMLInputElement
and modify its.checked
property:The benefit to using the
.prop()
and.attr()
methods instead of this is that they will operate on all matched elements.jQuery 1.5.x and below
The
.prop()
method is not available, so you need to use.attr()
.Note that this is the approach used by jQuery's unit tests prior to version 1.6 and is preferable to using
$('.myCheckbox').removeAttr('checked');
since the latter will, if the box was initially checked, change the behaviour of a call to.reset()
on any form that contains it – a subtle but probably unwelcome behaviour change.For more context, some incomplete discussion of the changes to the handling of the
checked
attribute/property in the transition from 1.5.x to 1.6 can be found in the version 1.6 release notes and the Attributes vs. Properties section of the.prop()
documentation.使用:
如果你想检查一个复选框是否被选中:
Use:
And if you want to check if a checkbox is checked or not:
这是使用 jQuery 检查和取消选中复选框的正确方法,因为它是跨平台标准,并且将允许表单重新发布。
通过这样做,您将使用 JavaScript 标准来选中和取消选中复选框,因此任何正确实现复选框元素的“checked”属性的浏览器都将完美地运行此代码。 这应该适用于所有主流浏览器,但我无法在 Internet Explorer 9 之前进行测试。
问题 (jQuery 1.6):
一旦用户单击某个复选框,该复选框就会停止响应“checked”属性更改。
下面是一个在有人点击复选框后复选框属性无法完成工作的示例(这种情况发生在 Chrome 中)。
Fiddle
解决方案:
通过使用 JavaScript 的“检查 DOM 元素上的“属性,我们可以直接解决问题,而不是尝试操纵 DOM 来完成我们希望它做的事情。
Fiddle
此插件将更改 jQuery 选择的任何元素的选中属性,并在所有情况下成功选中和取消选中复选框。 因此,虽然这看起来像是一个太过分的解决方案,但它将使您网站的用户体验更好,并有助于防止用户感到沮丧。
或者,如果您不想使用插件,可以使用以下代码片段:
This is the correct way of checking and unchecking checkboxes with jQuery, as it is cross-platform standard, and will allow form reposts.
By doing this, you are using JavaScript standards for checking and unchecking checkboxes, so any browser that properly implements the "checked" property of the checkbox element will run this code flawlessly. This should be all major browsers, but I am unable to test previous to Internet Explorer 9.
The Problem (jQuery 1.6):
Once a user clicks on a checkbox, that checkbox stops responding to the "checked" attribute changes.
Here is an example of the checkbox attribute failing to do the job after someone has clicked the checkbox (this happens in Chrome).
Fiddle
The Solution:
By using JavaScript's "checked" property on the DOM elements, we are able to solve the problem directly, instead of trying to manipulate the DOM into doing what we want it to do.
Fiddle
This plugin will alter the checked property of any elements selected by jQuery, and successfully check and uncheck checkboxes under all circumstances. So, while this may seem like an over-bearing solution, it will make your site's user experience better, and help prevent user frustration.
Alternatively, if you do not want to use a plugin, you can use the following code snippets:
您可以执行
以下操作: 或
如果您在要触发的复选框的 onclick 事件中有自定义代码,请改用此代码:
您可以通过完全删除该属性来取消选中:
您可以选中所有复选框,如下所示:
You can do
or
If you have custom code in the onclick event for the checkbox that you want to fire, use this one instead:
You can uncheck by removing the attribute entirely:
You can check all checkboxes like this:
您还可以使用新方法扩展 $.fn 对象:
然后您可以这样做:
或者您可能想给它们更多唯一的名称,例如 mycheck() 和 myuncheck() ,以防您使用其他使用这些名称的库。
You can also extend the $.fn object with new methods:
Then you can just do:
Or you may want to give them more unique names like mycheck() and myuncheck() in case you use some other library that uses those names.
最后一个将触发复选框的单击事件,其他则不会。
因此,如果您在要触发的复选框的 onclick 事件中有自定义代码,请使用最后一个。
The last one will fire the click event for the checkbox, the others will not.
So if you have custom code in the onclick event for the checkbox that you want to fire, use the last one.
要选中一个复选框,您应该使用
或
,要取消选中一个复选框,您应该始终将其设置为 false:
如果您
这样做,它会一起删除该属性,因此您将无法重置表单。
糟糕的演示 jQuery 1.6。 我认为这已经被打破了。 对于 1.6,我将就此发表一篇新文章。
新的工作演示 jQuery 1.5.2 可在 Chrome 中运行。
两个演示都使用
To check a checkbox you should use
or
and to uncheck a check box you should always set it to false:
If you do
it removes the attribute all together and therefore you will not be able to reset the form.
BAD DEMO jQuery 1.6. I think this is broken. For 1.6 I am going to make a new post on that.
NEW WORKING DEMO jQuery 1.5.2 works in Chrome.
Both demos use
这将选择具有指定属性且其值包含给定子字符串“ckbItem”的元素:
它将选择其 name 属性中包含 ckbItem 的所有元素。
This selects elements that have the specified attribute with a value containing the given substring "ckbItem":
It will select all elements that contain ckbItem in its name attribute.
假设问题是...
如何按值检查复选框集?
请记住,在典型的复选框集中,所有输入标记都具有相同的名称,它们的属性不同
value
:集合中的每个输入都没有 ID。Xian 的答案可以使用以下代码行通过更具体的选择器进行扩展:
Assuming that the question is...
How do I check a checkbox-set BY VALUE?
Remember that in a typical checkbox set, all input tags have the same name, they differ by the attribute
value
: there are no ID for each input of the set.Xian's answer can be extended with a more specific selector, using the following line of code:
我缺少解决方案。 我将永远使用:
I'm missing the solution. I'll always use:
要使用 jQuery 1.6 或更高版本检查复选框,只需执行以下操作:
要取消选中,请使用:
以下是我喜欢使用 jQuery 切换复选框的方法:
如果您使用的是 jQuery 1.5 或更低:
要取消选中,请使用:
To check a checkbox using jQuery 1.6 or higher just do this:
To uncheck, use:
Here' s what I like to use to toggle a checkbox using jQuery:
If you're using jQuery 1.5 or lower:
To uncheck, use:
这是一种不使用 jQuery 的方法
Here is a way to do it without jQuery
以下是使用按钮进行选中和取消选中的代码:
更新:这是使用较新的 Jquery 1.6+ prop 方法的相同代码块,该方法替换了 attr:
Here is code for checked and unchecked with a button:
Update: Here is the same code block using the newer Jquery 1.6+ prop method, which replaces attr:
尝试这个:
Try this:
我们可以将
elementObject
与 jQuery 一起使用来检查属性:我们可以将其用于所有 jQuery 版本,而不会出现任何错误。
更新:Jquery 1.6+ 有新的 prop 方法来替换 attr,例如:
We can use
elementObject
with jQuery for getting the attribute checked:We can use this for all jQuery versions without any error.
Update: Jquery 1.6+ has the new prop method which replaces attr, e.g.:
如果您使用 PhoneGap 进行应用程序开发,并且您在按钮上有一个想要立即显示的值,请记住这样做
我发现如果没有span,无论你做什么界面都不会更新。
If you are using PhoneGap doing application development, and you have a value on the button that you want to show instantly, remember to do this
I found that without the span, the interface will not update no matter what you do.
这是如何选中多个复选框的代码和演示...
http://jsfiddle.net/tamilmani/z8TTt/
Here is the code and demo for how to check multiple check boxes...
http://jsfiddle.net/tamilmani/z8TTt/
另一种可能的解决方案:
Another possible solution:
正如 @livefree75 所说:
jQuery 1.5.x 及以下版本
您还可以使用新方法扩展 $.fn 对象:
但是在新版本的 jQuery 中,我们必须使用如下内容:
jQuery 1.6+
然后你可以这样做:
As @livefree75 said:
jQuery 1.5.x and below
You can also extend the $.fn object with new methods:
But in new versions of jQuery, we have to use something like this:
jQuery 1.6+
Then you can just do:
对于 jQuery 1.6+
对于 jQuery 1.5.x 及更低版本
要检查,
For jQuery 1.6+
For jQuery 1.5.x and below
To check,
如果使用移动设备并且您希望界面更新并将复选框显示为未选中,请使用以下命令:
If using mobile and you want the interface to update and show the checkbox as unchecked, use the following:
选中和取消选中
To check and uncheck
请注意 Internet Explorer 9 之前的 Internet Explorer 中的内存泄漏,因为 jQuery 文档状态:
Be aware of memory leaks in Internet Explorer prior to Internet Explorer 9, as the jQuery documentation states:
这可能是最短和最简单的解决方案:
或者
更短的是:
Here is a jsFiddle 也是如此。
This is probably the shortest and easiest solution:
or
Even shorter would be:
Here is a jsFiddle as well.
纯 JavaScript 非常简单,开销也少得多:
示例如下
Plain JavaScript is very simple and much less overhead:
Example here
当您选中类似的复选框时;
这可能还不够。 您还应该调用下面的函数;
特别是当您删除了复选框选中属性时。
When you checked a checkbox like;
it might not be enough. You should also call the function below;
Especially when you removed the checkbox checked attribute.
我无法使用它来工作:
true 和 false 都会选中该复选框。 对我有用的是:
I couldn't get it working using:
Both true and false would check the checkbox. What worked for me was:
这是完整的答案
使用 jQuery
我测试了它,它可以 100% 工作:D
Here's the complete answer
using jQuery
I test it and it works 100% :D
在 jQuery
或
JavaScript 中,
In jQuery,
or
In JavaScript,