JQuery操作复选框的问题

horse_leo_zhcn 2014-12-09 11:14:03
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'test.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript">
////////添加一行、删除一行封装方法///////
/**
* 为table指定行添加一行
*
* tab 表id
* row 行数,如:0->第一行 1->第二行 -2->倒数第二行 -1->最后一行
* trHtml 添加行的html代码
*
*/
function addTr(tab, row, trHtml) {
//获取table最后一行 $("#tab tr:last")
//获取table第一行 $("#tab tr").eq(0)
//获取table倒数第二行 $("#tab tr").eq(-2)
var $tr = $("#" + tab + " tr").eq(row);
if ($tr.size() == 0) {
alert("指定的table id或行数不存在!");
return;
}
$tr.after(trHtml);
}

function delTr(ckb) {
//获取选中的复选框,然后循环遍历删除
var ckbs = $("input[name=" + ckb + "]:checked");
if (ckbs.size() == 0) {
alert("要删除指定行,需选中要删除的行!");
return;
}
ckbs.each(function() {
$(this).parent().parent().remove();
});
}

/**
* 全选
*
* allCkb 全选复选框的id
* items 复选框的name
*/
function allCheck(allCkb, items) {
$("#" + allCkb).click(function() {
$('[name=' + items + ']:checkbox').attr("checked", this.checked);
});
}

////////添加一行、删除一行测试方法///////
$(function() {
//全选
allCheck("allCkb", "ckb");
});

function addTr2(tab, row) {
var trHtml = "<tr align='center'><td width='30%'><input type='checkbox' name='ckb'/></td><td width='30%'>地理</td><td width='30%'>60</td></tr>";
addTr(tab, row, trHtml);
}

function delTr2() {
delTr('ckb');
}
</script>
</head>

<body>
<table border="1px #ooo" id="tab" cellpadding="0" cellspacing="0" width="30%">
<tr align="center">
<td width="30%"><input id="allCkb" type="checkbox" /></td>
<td width="30%">科目</td>
<td width="30%">成绩</td>
</tr>
<tr align="center">
<td width="30%"></td>
<td width="30%">语文</td>
<td width="30%">80</td>
</tr>
</table>
<input type="button" onclick="addTr2('tab', -1)" value="添加">
<input type="button" onclick="delTr2()" value="删除">
</body>
</html>



问题:当页面运行起来之后,第一次点击<input id="allCkb" type="checkbox" />的时候,下边的都能选中,再点击,也能全部取消选中,但是如果再点击,就没有反应了,

我需要的效果是:点击<input id="allCkb" type="checkbox" />的时候,如过全选中,就全取消,但如果没选中,就全选中,不关点多少次,都是一样
...全文
168 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Braska 2014-12-09
  • 打赏
  • 举报
回复
1L正解 .attr()方法换成.prop()方法
slwsss 2014-12-09
  • 打赏
  • 举报
回复
function allCheck(allCkb, items) { $("#" + allCkb).click(function() { var b=$('[name=' + items + ']:checkbox').length!=$('[name=' + items + ']:checked').length; $('[name=' + items + ']:checkbox').attr("checked",b); this.checked=b; }); }
闪闪放光芒 2014-12-09
  • 打赏
  • 举报
回复
$(function(){ $("#allCkb").click(function(){ if(this.checked) $(":checkbox").prop("checked",true); else $(":checkbox").prop("checked",false); }) })

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧