2009-09-08 4 views
1

j'ai le code ci-dessous dans mon application vb.net:Retrait complet TR en utilisant l'absence de données

<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse;" id="ctl00_ContentPlaceHolder2_FormView1" class="innerGridTable"> 
    <tbody> 
     <tr> 
      <td colspan="2"> 
     <tr> 
      <td> 
       <b>VenueID:</b> 
      </td> 
      <td> 
       <span id="ctl00_ContentPlaceHolder2_FormView1_VenueIDLabel">3</span> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="4"> 
       <asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" CssClass="Button" /> 
       <asp:Button ID="ibtnNewTrainer" runat="server" CausesValidation="False" CommandName="New" CssClass="Button" Text="New Trainer" /> 
       <asp:Button ID="ibtnSearchCourse" runat="server" CausesValidation="False" CommandName="Search" CssClass="Button" Text="Search Course" /> 
      </td> 
     </tr> 
      </td> 
     </tr> 
    </tbody> 
</table> 

Comme vous pouvez le voir est vide la première <tr> - il est juste <td colspan="2"></td> sans aucune donnée. Je veux supprimer le complet <tr> en utilisant Jquery, quand il n'y a pas de données dans le <td> comme la condition ci-dessus.

Répondre

2
$("table tr").each(function() { 
    if ($("td:empty",this).length == $("td",this).length) { 
     $(this).remove(); 
    } 
}); 
+0

Approche intéressante - '$ ('td: not (: empty)', this) .length == 0' pourrait être une bonne optimisation. – gnarf

+0

Je ne veux pas supprimer le td complet au lieu de cela Je veux mettre à jour mon premier colspan = "2" à colspan = "4" –

2

Je bouclerais tous les éléments de données et définirais un drapeau si l'un d'entre eux avait des données. Si vous ne trouvez pas de données, supprimez la ligne.

$('tr').each(function() { 
    var hasData = false; 
    $(this).find('td').each(function() { 
     if ($(this).text()) { // this is the TD here 
      hasData = true; 
      return false; 
     } 
    }); 
    if (!hasData) $(this).remove(); // this is the TR here 
}); 

Notez que vous pouvez vérifier le texte combiné de tous les TDs à la fois, mais cela court-circuit sur le premier qui a des données. Ce n'est peut-être pas vraiment une amélioration. L'autre façon serait:

if ($(this).find('td').text()) { 
    $(this).remove(); 
} 

Notez également que cela ne tient pas compte des espaces. Ils doivent être vraiment vides - pas de sauts de ligne, etc. S'ils peuvent contenir des sauts de ligne, alors vous devrez vérifier avec une expression régulière qui n'accepte que les espaces.

0

Vous pouvez vérifier que le fichier .text() du TR ne contient que des espaces et le supprimer s'il le fait.

$("tr").each(function() { 
    // test using regexp that the content of the tr contains only whitespace 
    if (/^\s*$/.test($(this).text())) { 
    // remove tr if it is "blank" 
    $(this).remove(); 
    } 
} 

éléments de formulaire ne sont pas représentés texte cependant, vous pouvez également tester les "vides" tags:

$("tr").each(function() { 
    // filter our children to only not empty tags. 
    // 0 of them means that all our children are empty 
    if ($(this).children().filter(':not(:empty)').length == 0) { 
    $(this).remove(); 
    } 
} 
+0

Merci, mais aussi supprimer mon bouton, s'il vous plaît voir mon code ci-dessus –

0

Je résolu mon problème en utilisant ci-dessous le code jquery

$(document).ready(function() 
    { 
     $("table tr:first td[colspan=2]").each(function() { 

      if (/^\s*$/.test($(this).text())) 
      { 

      $(this).remove(); 
      } 
     }); 
}); 

À la votre! S'il vous plaît laissez-moi savoir ce qui peut être le problème si j'utilise le code ci-dessus

Questions connexes