在jQuery中更改TD元素

时间:2014-12-22 21:21:42

标签: javascript php jquery html

我正在创建一个网页,其中包含从数据库中提取的公告。这是我的HTML代码

<table width="100%" border="0">
<?php while($row = mysql_fetch_array($result)){ ?>
   <tr>
      <td id="maintitle" style="font-size: 34px; font-weight: bold;"><?php print  $row['title'];   ?></td>
   </tr>
   <tr>
      <td id="maincontent"><?php print $row['content'];?></td>
   </tr>
   <tr>
      <td id="mainname" style="font-size: 12px; font-style: italic;"><?php print $row['name'];?></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
   </tr>
   <tr>
      <td>&nbsp;</td>
   </tr>
<?php }?>
</table>

我想要的是,如果没有公告,TD元素将显示特定文本,并且我已决定使用jQuery。这是我的代码

<script type="text/javascript">
   $(document).ready(function(){
      $('#maintitle',this).each(function(){
         if($(this).html() != '');
            $(this).append("No Incidents recorded!");
      });
   });
</script>

但是,即使数据库中没有公告,也没有任何反应。我想知道是否有不同的方法,或更改jquery代码。

2 个答案:

答案 0 :(得分:1)

我认为这是你想要的代码 - 你必须循环遍历tr而不是

$(document).ready(function(){
      $('table tr').each(function(){
          if($(this).find('td').html() == ''){
            $(this).find('td').html("No Incidents recorded!");
          }
      });
   });

DEMO

答案 1 :(得分:0)

首先,你的jQuery脚本与你想要的完全相反(如果我理解你的问题) - 如果元素中有值,它会附加文本。主要的逻辑问题在if语句中:

if($(this).html != '');
    $(this).append("No Incidents recorded!");

...那说“如果元素中的内部html不为空 - 附加字符串......”

应该是:

if($(this).html() === '') {
    $(this).append("No Incidents recorded!");
}

我应该指出代码的其他问题,即使它与问题无关:

  • 正如Mark B在评论中指出的那样,您在循环的每次迭代中输出相同的id值(W3 specification)。解决方案 - 使用class属性。

  • 您正在立即终止if语句,因此它对以下代码没有影响:

    if($(this).html != '');
    

    应该是:

    if($(this).html() === '') {
        // execute this code when the if statement resolves to true.
    }
    
  • 脚本中的这一行是错误的,因为您需要调用$函数,而您正在做的是引用jQuery中不存在的$document变量

    $document.ready(function(){
    

    应该是:

    $(document).ready(function () {
    
  • 你真的不需要在jQuery函数中使用第二个参数(this),因为将this作为上下文传递是没有意义的:

    $('#title',this).each(function(){
    
  • 您应该在html之后添加括号,因为它是一个函数 - 而不是属性:

    if($(this).html != '');
    

    应该是:

    if($(this).html() ...
    

还需要考虑更多要点(不是很多错误,只是一些提示):

  • 使用循环或其他php结构与html结合使用替代语法(只是使代码更清晰):

    <?php while(expression):?>
    <a href="#">example link</a>
    ...
    <?php endwhile ?>
    
  • 使用简写版<?php echo ... ?><?php print ... ?>

    <?= 'some string...' ?>
    

快乐的编码!