复选框默认图标不会使用 jQuery 更新
Checkbox default icon doesn’t update with jQuery
我有一个简单的脚本,<a>
单击它时会选中或取消选中复选框。第一次一切正常,但是一旦使用jQuery更改了值,它就不会更新(尽管在Chrome的检查器中,正在添加/删除属性checked="checked"
(。
.HTML:
<a href="#" class="js-tick-untick-checkbox">
<input type="checkbox" class="send-invite-checkbox" />
Something something in the month of May
</a>
j查询:
$('.js-tick-untick-checkbox').click(function() {
var checkbox = $(this).find('.send-invite-checkbox');
if ($(checkbox).attr('checked') === 'checked') {
checkbox.removeAttr('checked');
$(this).removeClass('selected-element');
} else {
checkbox.attr('checked', 'checked');
$(this).addClass('selected-element');
}
return false;
})
查看演示:http://jsfiddle.net/y3e0jfc6/
我尝试了各种其他选项,例如 checked="true"
/checked="false"
,没有一个有效...
有什么想法吗?谢谢。
使用 prop()
而不是 attr()
从文档中:
从 jQuery 1.6 开始,
.attr()
方法为尚未设置的属性返回未定义。若要检索和更改 DOM 属性(如窗体元素的选中、选定或禁用状态(,请使用.prop()
方法。
$('.js-tick-untick-checkbox').click(function () {
var checkbox = $(this).find('.send-invite-checkbox');
if ($(checkbox).prop('checked')) {
checkbox.prop('checked', false);
$(this).removeClass('selected-element');
} else {
checkbox.prop('checked', true);
$(this).addClass('selected-element');
}
return false;
})
演示
旁注:你也可以这样做。
你应该
改用$.prop()
。
checkbox.prop('checked', true);
checkbox.prop('checked', false);
试试这段代码
$('.js-tick-untick-checkbox').click(function() {
var checkbox = $(this).find('.send-invite-checkbox');
if ($(checkbox).is(':checked')) {
checkbox.prop('checked', false);
$(this).removeClass('selected-element');
} else {
checkbox.prop('checked', true);
$(this).addClass('selected-element');
}
return false;
});
你应该使用 .prop 而不是 .attr
更新的 jquery
$('.js-tick-untick-checkbox').click(function() {
var checkbox = $(this).find('.send-invite-checkbox');
if ($(checkbox).prop('checked') == true) {
checkbox.prop('checked', false);
$(this).removeClass('selected-element');
} else {
checkbox.prop('checked', true);
$(this).addClass('selected-element');
}
return false;
})
在 jQuery 1.6 之前,这些属性可以使用 .attr(( 方法检索,但这不在 attr 的范围内。源
$('.js-tick-untick-checkbox').click(function() {
var checkbox = $(this).find('.send-invite-checkbox');
if ($(checkbox).is(':checked')) {
$(checkbox).removeAttr('checked');
} else {
$(checkbox).prop('checked', 'checked');
}
$(this).toggleClass('selected-element');
return false;
})
演示:
http://jsfiddle.net/4ywmLr3u/1/
相关文章:
- jQuery-更新jQuery.ajax().done()中点击的图像
- 基于复选框 Jquery 更新文本框
- 根据复选框选择 jQuery 更新文本框
- JQuery:更新表内容花费的时间太长
- 如何使用Jquery更新数据确认属性中的消息
- Jquery更新到1.10.2后,Jquery Ajax Json对象未显示
- jQuery更新DOM并运行change()方法
- 使用jQuery更新选择的多个字段的数量
- 当原始内容通过jQuery更新时,我如何告诉PageDown更新其预览
- jQuery更新文本字段不起作用
- 有没有更好的方法可以用jquery更新图像的高度和宽度
- 如何使用jquery更新表coulmn
- 使用jQuery更新的Kendo UI网格值不会更新传递回来的模型
- 使用jQuery更新CSS属性
- PrimeFaces 命令按钮使用 jQuery 更新数据表内部
- 创建 Jquery 更新函数
- jquery 更新嵌套对象的键
- 如何使用 jQuery 更新表
- Drupal - Jquery 更新版本与灯箱冲突
- 使用 AJAX Jquery 更新 JSON