Использование jquery для выполнения border: none и background-color: white на пустых ячейках - PullRequest
0 голосов
/ 06 августа 2010

Итак, у меня есть эта (огромная) таблица, классифицированная как css (big_conv_tbl). Все «пустые» ячейки имеют внутри них & nbsp, я также использую нечетный / четный сценарий CSS, чтобы сделать таблицу более удобной для чтения (и, таким образом, некоторые «пустые» ячейки имеют серый фоновый цвет).

Я хочу удалить границы и цвет фона (установите его на белый), если ячейка «пуста» (в моем случае, если она содержит «& nbsp»). Пустая ячейка: скрыть не работает.

Я написал простой скрипт jquery, но он не работает:

$(".big_conv_tbl tr").each(function() {                           

var VC = $(this).find("td").html().trim();                          

if (VC == ''){                 
    $(this).css('background-color','white');
}             
});

Что я делаю не так? У меня нет классов для td, только для строк (нечетные / четные). Пожалуйста, не заставляй меня учить каждый ТД, чертовски огромный стол. Я ценю любую помощь

le:

Спасибо, Ник, мне пришлось редактировать (недостаточно комментариев в комментарии).

Вот простая html-страница с небольшой таблицей. По какой-то причине это просто не будет работать

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" >
$(".big_conv_tbl tr td").each(function() {
  if ($.trim($.text([this])) == '') {
    $(this).css('background-color','white');
  }
});
</script>


</head>


<body>
<table width="100%" border="1" class="big_conv_tbl" bgcolor="#999999">
  <tr>
    <td>asdsads</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>sagasag</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>sagsagsagsag</td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>

1 Ответ

1 голос
/ 06 августа 2010

Вместо зацикливания для строки, вам нужно перебрать каждую ячейку, например:

$(function() { //so it runs when the DOM is ready
  $(".big_conv_tbl tr td").each(function() {
    if ($.trim($.text([this])) == '') {
      $(this).css('background-color','white');
    }
  });
});

В этом случае мы используем $.trim() на $.text() объекта, а не .html() (который все равно иметь содержимое ("&nbsp;"). $.text() - это просто более эффективный способ вывода текста, поскольку нам не нужно создавать здесь другой объект jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...