如何使用jQuery将静态内容添加到空单元格

时间:2010-08-09 18:38:25

标签: javascript jquery jquery-plugins

这是一个示例表

<table width="580" height="217" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="334">Website</td>
    <td width="246">Category</td>
  </tr>
  <tr>
    <td>http://www.google.com</td>
    <td>Search Engine</td>
  </tr>
  <tr>
    <td>http://www.gmail.com</td>
    <td>Web Mail</td>
  </tr>
  <tr>
    <td>http://www.xyz.com</td>
    <td></td>
  </tr>
  <tr>
    <td>http://www.amazon.com</td>
    <td>Shopping</td>
  </tr>
  <tr>
    <td>http://www.website.com</td>
    <td></td>
  </tr>
</table>

此表中有两个单元格为空,如何使用jquery在这些空单元格中添加“未找到”文本?

3 个答案:

答案 0 :(得分:5)

$('table td:empty').append('Not Found');

<强> Demo here

请注意,选择器:empty表示没有子节点,包括文本节点,因此请注意如何布置html,因为在新行上布置开始和结束标记可能会将文本节点子节点引入您认为的内容空单元格。解决这个问题的基本方法可能是定义我们自己的选择器表达式

(function ($) {

    $.extend($.expr[':'],{
        reallyEmpty: function(elem) {
            return !elem.firstChild ||
               elem.firstChild.nodeType === 3 && !!/^\s|\n$/.test(elem.firstChild.textContent);
        }
    });

})(jQuery);

然后使用此

$('td:reallyEmpty').append('Not Found');

答案 1 :(得分:2)

这是我放在一起的片段。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script type="text/javascript" >

$(document).ready(function() {

$('#tableid td').each(function()
{
  if($(this).html() == "") {
    $(this).html("Not Found"); 
  }
});

});

</script>
<table id="tableid" width="580" height="217" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="334">Website</td>
    <td width="246">Category</td>
  </tr>
  <tr>
    <td>http://www.google.com</td>
    <td>Search Engine</td>
  </tr>
  <tr>
    <td>http://www.gmail.com</td>
    <td>Web Mail</td>
  </tr>
  <tr>
    <td>http://www.xyz.com</td>
    <td></td>
  </tr>
  <tr>
    <td>http://www.amazon.com</td>
    <td>Shopping</td>
  </tr>
  <tr>
    <td>http://www.website.com</td>
    <td ></td>
  </tr>
</table>

答案 2 :(得分:0)

试试这个

$('td').each(function(){
    if($(this).html()=='') 
       $(this).html('not found');
   });