您不能在包含您的页面代码的同一标记中包含外部脚本。它需要是一个单独的空标签:
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script>
// my script
</script>
另外,一些注意事项:
该.each()
函数在您的代码中不做任何事情,除了运行过滤器函数太多次。对于 each tr
,您正在查看every td
,而不仅仅是当前行中的那些。如果您取出.each()
,代码仍然有效:
演示:http: //jsfiddle.net/jtbowden/dgswh/
其次,不用过滤,只需将函数添加到您的.css()
调用中:
var colors = {'1': 'green', '2': 'orange', '3': 'red', '4': 'blue' };
$("td").css('background-color', function(index, value) {
var txt = $(this).text();
if(colors.hasOwnProperty(txt)) {
return colors[txt];
}
return value;
});
演示:http: //jsfiddle.net/jtbowden/dgswh/2/
这将您的代码减少到一个调用,而不是 4 个(并且每个调用只运行一次td
)。如果您想将其限制在该表中,请更改选择器:
$(".myGridView1 td").css('background-color', function(index, value) { ... });
跟进
要从td
更改颜色后删除文本,您可以执行以下操作:
$("td").css('background-color', function(index, value) {
var txt = $(this).text();
$(this).text(""); // ADD THIS LINE
if(colors.hasOwnProperty(txt)) {
return colors[txt];
}
return value;
});
如果您只想删除td
s 匹配的文本,请移动该行:
$("td").css('background-color', function(index, value) {
var txt = $(this).text();
if(colors.hasOwnProperty(txt)) {
$(this).text(""); // MOVE TO HERE
return colors[txt];
}
return value;
});
需要注意的是,如果没有一些样式,如果你清空一个表格单元格,它可能会折叠到零宽度,或者如果一行上的所有单元格都是空的,那么该行可能会折叠到零高度。如果是这种情况,请在 CSS 中添加min-height
和min-width
定义td
,或更改$(this).text("")
为$(this).html(' ')
演示:http: //jsfiddle.net/jtbowden/dgswh/5/
如果你想保留数字,但不可见,你可以td
用 hidden 或 invisible包装 的内容div
:
$(this).wrapInner("<div style='visibility:hidden'>");
或者:
$(this).wrapInner("<div style='display:none'>");
演示:http: //jsfiddle.net/jtbowden/dgswh/6/