【发布时间】:2013-07-29 15:33:54
【问题描述】:
我需要在一系列单选按钮和复选框上添加/删除一个通用类(类似于 .is-checked)。这是我的代码:
$(function () {
$('input[type="checkbox"], input[type="radio"]').each(function () {
$(this).on('click', function () {
$(this).parent().wrap('<div>').unwrap();
// works great for checkboxes, but not for radios
if ($(this).prop('checked')) {
$(this).addClass('is-checked');
} else {
$(this).removeClass('is-checked');
}
})
})
})
这在复选框上非常有效,但在添加到单选按钮的类上永远不会被删除。想法?想法?
编辑 我不小心忽略了提到这个脚本将为 IE8 有条件地加载,因为不支持 ':checked' 伪选择器。整个功能在除 IE8 之外的所有设备中都运行良好,因此这是该浏览器的拐杖,而可怜的用户则坚持使用它。最后,'is-checked' 类将触发与 :checked 选择器相同的 CSS。
【问题讨论】:
-
你为什么在你的
each中使用$(this).on('click', function () {?你能详细说明一下吗? -
您的代码似乎对我有用。两个点击事件都在触发并设置
is-checked类。 jsfiddle.net/xzNPh -
@WillemEllis 可能在 jquery 版本中有所不同(认为是 1.6 改变了
attr和prop的行为) -
不使用
.is-checked类,为什么不在你的css 中使用:checked? -
@hungerpain 我不确定为什么这不需要点击事件。整个想法是用户将手动更改输入的状态至少一次,如果不是多次的话。
标签: jquery checkbox radio prop