我正在用html开发一个表格,每一行都有一个复选框,它的属性名和标签tr相同,所以如果原始数据是唯一的,我想把选中的行标为黄色,否则所有选中的行都标为蓝色,所以我开发了这个:
var checked = $("input[@type=checkbox]:checked");
var nbChecked = checked.size();
if(nbChecked==1){
var row = $('tr[name*="'+checked.attr("name")+'"]');
row.style.backgroundColor="#FFFF33";
}
但是颜色不变:(你能告诉我为什么吗?你能帮我吗?)
<TR valign=top name="<?php echo $not[$j]['name'];?>">
<TD width=12 style="background-color:#33CCCC">
<div class="wpmd">
<div align=center>
<font color="#FF0000" class="ws7">
<input type="checkbox" name="<?php echo $not[$j]['name'];?>" onchange="analizeCheckBox()"/>
</div>
.
.
.
.
.
.
3条答案
按热度按时间fnx2tebb1#
虽然这段代码没有让您了解所有的函数,但它确实完成了行更新。
http://jsfiddle.net/4QKe9/5/
这里是Javascript:
68de4m5k2#
首先,你得到的是单元格的背景色,而不是行的背景色。你需要移动它。
下面是你的固定html:
然后这个脚本就可以工作了
更改“td.ws7”选择器以满足您的需要。
Example.
snz8szmq3#
当你用一个选择器字符串调用jQuery函数
$()
时,它将返回一个类似于数组 * 的jQuery对象,即使只有1个或0个元素匹配 *。不起作用是因为
row
不是一个带有style
属性的DOM元素,它是一个jQuery对象,类似于一个带有许多额外方法的数组。将更新第一个匹配的DOM元素。如果没有匹配,那么
row[0]
将是未定义的,你会得到一个错误。row.length
将告诉你有多少元素匹配。在您的代码中:
您不需要
@
符号来匹配属性名称,因此"input[type=checkbox]:checked"
是可以的,但是"input:checkbox:checked"
更简单。注意,根本不需要通过
name
属性进行选择,因为jQuery的.closest()
method将允许您找到选中的复选框所属的tr元素。工作演示:http://jsfiddle.net/FB9yA/