您不能在包含頁面代碼的相同標記中包含外部腳本。它必須是一個獨立的,空標籤:
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script>
// my script
</script>
此外,還有一些注意事項:
的.each()
功能並不做任何事情在你的代碼,但運行過濾器的功能太多次。對於每個tr
,您正在查看每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;
});
重要的是要注意,如果沒有某種樣式,如果您清空表格單元格,它可能會摺疊爲零寬度,或者如果一行中的所有單元格都爲空,則該行可能會摺疊到零高度。如果是這樣的話,無論是增加對td
min-height
和min-width
定義在你的CSS,或更改$(this).text("")
到$(this).html(' ')
演示:http://jsfiddle.net/jtbowden/dgswh/5/
如果你想保留的數量,但又不希望它是可見的,你可以隱藏或不可見div
包裹td
的內容:
$(this).wrapInner("<div style='visibility:hidden'>");
或者:
$(this).wrapInner("<div style='display:none'>");
演示:http://jsfiddle.net/jtbowden/dgswh/6/
我建議你根據該值添加一個類到TD,如果你可以(在服務器端)..即'
爲什麼不''(this).text()'?! – ThiefMaster
@lucuma,根據CSS規範,不能有以數字開頭的類。 – sg3s