2017-11-17 2 views
3

I Tabelle unten in meiner jsp haben mit Verbindungen dynamisch auf Seite Last kommenden Java Arraylist mitentfernen Räume zwischen Links von HTML-Tabelle, wenn Links entfernt

<%ArrayList<String> display = ArrayList<String>)session.getAttribute("links");  %> 
<table border="0" width="100%" style =""> 
    <tr></tr> 
    <td width="20%"></td> 
    <table border="0" width ="50%" id="LinkDisplay"> 
     <div id="LinkDisplay"> 
      <%if(display!=null){ 
      for(int p=0;p<display.size();p++){%> 
      <tr><td width="42%">&nbsp;</td><td><a href="javascript:removeLink('<%=display.get(p)%>')"><%=display.get(p)%></a><br></td><td>&nbsp;</td></tr> 
      <% } }%> 
     </div> 
    </table> 
    <td></td> 
    <tr></tr> 
</table> 

Wenn ich auf den Link klicken, wird es den Link calling entfernen und verstecken removeLink Javascript Funktion

Aber wenn Link entfernen, hinterlässt es die Leerzeichen zwischen den Links. Wie man diesen Raum entfernt, wenn der Link geklickt hat. Ich versuchte sogar versucht, sich zu verstecken das leere td Element zu entfernen (ohne Link-Text), aber es hilft nicht .. Seite mit allen Links aussehen wie folgt: -

enter image description here

nach Klicken auf Links lässt es die Räume wie folgt: -

enter image description here

auch wenn es mehr als 10 Links I Bildlaufleisten hinzufügen möchten, können wir tun, dass auf dem Tisch. Wenn Tabelle nicht der richtige Weg ist, all dies zu tun, gibt es einen anderen einfachen Weg?

+2

Beachten Sie, dass Ihr HTML ungültig ist. Sie können kein 'div' als Kind einer' Tabelle' haben –

+2

Ihr HTML-Markup ist ungültig. In CSS4 sollte das trotzdem möglich sein: 'tr: not (: hat (li> a)) {display: none;}' –

+0

@RoryMcCrossan Die Verwendung von 'table' kann hier weggelassen werden, dies kann einfach mit' bewerkstelligt werden divs statt "tr", können Sie das Layout dann einfach verwalten. –

Antwort

3

Sie sollten die komplette <TR>, .closest() kann verwendet werden, um bis <TR> durchlaufen dann entfernen Sie es.

$('#LinkDisplay a').click(function() { 
    var $this = $(this); 
    $this.closest('tr').remove(); 
}); 
0

Sie nur das a Element entfernt werden soll, müssen Sie die ganze tr entfernen:

$('#LinkDisplay a').click(function() { 
    var $this = $(this);   
    $this.parent().parent().remove(); 
} 

Oder sogar $this.parent("#LinkDisplay tr").remove(); besser.

Hinweis:

  • Sie können nicht die gleiche id="LinkDisplay" für mehr als ein Element verwenden zu können, verwendet es für table und div hier.
  • Ihr HTML ist ungültig, Sie können kein div als unmittelbares Kind eines table haben, muss es behoben werden.

Und ja können Sie dies tun, ohne table, benutzen Sie einfach eine div für jeden Link, werden sie als block standardmäßig verwenden, angezeigt werden margin mit Ihrem div anstelle eines td mit &nbsp; als Inhalt, auf diese Weise Sie kann das Layout besser verwalten.