jquery destaque () quebrando na tabela dinâmica

Eu tenho um pequeno problema com uma função de destaque que estou trabalhando. Basicamente, carrego registros de um banco de dados que corresponde aos dados do formulário atual de determinadas maneiras. Então, quando alguém estiver preenchendo o formulário, se ele estiver descrevendo um problema que já existe no meu sistema, ele destacará as palavras que sua descrição tem em comum com o (s) registro (s) existente (s). Meu problema é que a tabela quebra. Ele funcionará até certo ponto, mas às vezes ele quebra a parte do loop do PHP do restante da tabela e não tem formatação, e a função de realce não funcionará. Para ser mais específico, uma vez quebrados, as tags td no corpo da tabela não seguem a formatação da linha de cabeçalho. Condições que causam o efeito indesejável:

tabulação através da área de textoSe muitas classes precisarem ser removidas ou aplicadas de uma só vez (excluindo todas, adicionando muitas palavras ou excluindo ou procurando por um único caractere com muitas ocorrências)

html na página principal && script para acionar o destaque

<textarea name="description" id="description"></textarea>
<script>
 var delay = (function(){
 var timer = 0;
 return function(callback, ms){
 clearTimeout (timer);
 timer = setTimeout(callback, ms);
 };
 })();
 $(function(){
    $("#description").keydown(function(){
    delay((function(){
    $("#displayer *").removeClass('highlight');
    var1 = $('textarea#description').val().split(' ');
    for (var i=0;i<var1.length;i++){
    $("#displayer *").highlight(var1[i], "highlight")};
    }),1000);
    });
    });
 </script>

o php externo que constrói a tabela pesquisada com base em uma chamada ajax é o seguinte:

echo '<TABLE BORDER="0" CELLSPACING="5" CELLPADDING="5" id="displayer"><FONT     FACE="ARIAL">';

   echo ' <tr> '; 
echo '   <td width="20" ALIGN="LEFT" height="1">ID</td>'; 
echo '   <td width="89" ALIGN="LEFT" height="1">Date</td> '; 
echo '   <td width="200" ALIGN="LEFT" height="1" >Description</td>'; 
echo '   <td width="89" ALIGN="LEFT" height="1" >Solution</td>'; 
echo '   <td width="20" ALIGN="LEFT" height="1" >User:</td>'; 
echo '   <td ALIGN="LEFT" height="1" >Key?:</td>';
echo '   <td ALIGN="LEFT" height="1" >Part:</td>';
echo '   <td ALIGN="LEFT" height="1" >Classified As:</td>';
echo ' </tr>   '; 
 for ($i=1; $i <= $num_results; $i++)
    {
   $row = mysql_fetch_array($result1); 

     echo '<TR BGCOLOR="#EFEFEF">';
     echo '<TD width="20">';
     echo  stripslashes($row['0']) ;
     echo '</TD>';
     echo '<TD width="89" >';
     echo  $row['1'] ;
     echo '</TD>';
     echo '<TD width="200">';
     echo  stripslashes($row['6']) ;
     echo '</TD>';
     echo '<TD width="89">';
     echo  stripslashes($row['11']) ;
     echo '</TD>';
     echo '<TD  width="20">';
     echo  $row['5'] ;
     echo '</TD>';
      echo '<TD>';
      if ($row['8'] == 1)
     {echo  'Yes' ;}
     else 
     {echo 'No' ;}

     echo '</TD>';
     echo '<td>'.$row['10'].'</td>';
     echo '<td>'.$row['9'].'</td>';

     echo '</TR>';

    }
         echo '</TABLE>';

plugin de destaque externo:

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "gi");
    return this.each(function () {
        $(this).contents().filter(function() {
            return this.nodeType == 3 && regex.test(this.nodeValue);
        }).replaceWith(function() {
            return (this.nodeValue || "").replace(regex, function(match) {
                return "<span class=\"" + className + "\">" + match + "</span>";
            });
        });
    });
};

Acho que devo adicionar um teste para vazio com algum tipo de escape, para resolver a primeira condição, mas com o segundo, não tenho certeza do que está acontecendo. Todas as sugestões são definitivamente apreciadas. Desculpem a postagem ser enorme e complicada, mas eu queria que todos tivessem todas as informações que eu poderia fornecer.

questionAnswers(1)

yourAnswerToTheQuestion