2017-08-17 3 views
-2

Ich kann </a> nicht an <a> anhängen (der zweite Teil ist nicht miteinander verbunden), aber kann nur Verkettung wie unten gezeigt verwenden. Wie löst man das, anstatt die Verkettung zu verwenden?JS appendiere</a> an <a>

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>I'm A Template</title> 
</head> 
<body> 
    <div id="a"></div> 
    <script src="http://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> 
    <script> 
     var b = '<a href="#">%data%', 
      c = ' - %data%</a>', 
      d = '1'; 

     // concatenation 
     $("#a").append(b.replace('%data%', d) + c.replace('%data%', d)); 

     $("#a").append('<br>'); 

     // append 
     $("#a").append(b.replace('%data%', d)); 
     $("#a").append(c.replace('%data%', d)); 
    </script> 
</body> 
</html> 
+2

Ja. Das DOM arbeitet mit vollständigen Elementen, nicht mit einzelnen Tags. – Bergi

+0

Was denkst du ist falsch mit Verkettung ?! – Bergi

Antwort

1

ich nicht </a> zu <a> anhängen , der zweite Teil ist nicht miteinander verbunden

Ja. Das DOM arbeitet mit vollständigen Elementen, nicht mit einzelnen Tags. Wenn Sie <a> ohne schließendes Tag hinzufügen, wird das für Sie so korrigiert, dass Sie immer eine gültige Struktur haben.

Wie löst man das anstelle der Verkettung?

Es ist nichts falsch mit Verkettung. Natürlich gibt es viele Dinge falsch mit dem Mischen von HTML-Strings. Verwenden Sie stattdessen

var d = '1'; 

$("#a").append($('<a>', { 
    href: '#', 
    text: '%data% - %data%'.replace(/%data%/g, d) 
}), $('<br>')); 
+0

hey Bergi, danke wirklich für deine Antwort, aber warum brauchen wir hier ein 'g'? – earvinLi

+0

@earvinLi Um den regulären Ausdruck global zu machen und alle Vorkommen von '% data%' nicht nur dem ersten zuzuordnen. – Bergi

+0

Es tut mir leid, nur zu akzeptieren ... – earvinLi

0

Sie müssen das Anker-Tag nicht in Variablen haben. Sie können zunächst ein Anker-Tag und fügen Sie es an die div # a, erstellen und dann den Inhalt% data% anhängen zu diesem neu geschaffenen Ankertag

<body> 
<div id="a"></div> 
<script src="http://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> 
<script> 
    var b = '%data%', 
     c = '%data%', 
     d = '1'; 

    $("#a").append("<a href='#' id='anchorTag'></a>"); 

    $("#anchorTag").append(b.replace('%data%', d)); 
    $("#anchorTag").append(c.replace('%data%', d)); 
</script> 

+0

Danke Goontracker! – earvinLi