我很困惑为什么这不起作用而且无法调试
我有一组复选框按属性值分组 并且当我点击这个时我想在其他复选框切换到相同的状态时,在每个组的脚下都有一个checkall类具有匹配的属性值
jquery的
$(function () {
$('.checkall').click(function () {
var myactivemonth=$(this).attr("data-mymonth");
console.log(myactivemonth);
var myactivebox="a_"+myactivemonth;
$('checkbox[data_mymonth=myactivemonth]').attr('checked','checked');
});
html
<input id="alloInv" class="tip_trigger" type="checkbox" data-mymonth="a_October2012" title="13.94" value="2018441" name="alloInv">
<input id="alloInv" class="tip_trigger" type="checkbox" data-mymonth="a_October2012" title="10.94" value="201845" name="alloInv">
<input class="checkall" type="checkbox" data-mymonth="October2012">
显示一切正常,但方框没有勾选:(
答案 0 :(得分:2)
你有一系列错误的事情
checkbox
应为:checkbox
data_mymonth
应为data-mymonth
myactivebox
需要动态传递});
还有一些改进
.prop()
代替.attr()
来获取元素的实际属性。 $(this).data('mymonth');
.data()
从data-
属性所以
$(':checkbox[data-mymonth="' + myactivebox + '"]').prop('checked',true);
的工作演示
<强>更新强>
我错过了 切换 部分问题
要处理切换复选框,您需要将checked
属性设置为.checkall
元素的属性。
.prop()
方式(demo)
$(':checkbox[data-mymonth="' + myactivebox + '"]').prop('checked', this.checked);
.attr()
方式
$(':checkbox[data-mymonth="' + myactivebox + '"]').attr('checked', this.checked);
答案 1 :(得分:0)
谢谢你这样做但是我确定有一种更简洁的方法可以切换复选框的状态吗?
$(function() {
$('.checkall').click(function() {
var myactivemonth = $(this).attr("data-mymonth");
var mystate = $(this).attr("checked");
if (mystate==undefined) {mystate=false;};
console.log(myactivemonth);
var myactivebox = "a_" + myactivemonth;
$(':checkbox[data-mymonth="' + myactivebox + '"]').attr('checked',mystate);
});
});
PS更新了jquery squiggle tnow,这是一个有用的工具!