Frage

Der Code unten funktioniert gut. Aber wenn ich die Zeichenfolge html ändern in newPara (), um <textarea></textarea><button id="someId">Save</button> oder <textarea></textarea><input type="button" value="Save"/> seine nicht funktioniert. Was ist das Problem dabei?

Ich brauche das id-Attribut den neu angeschlossenen html zu entfernen.

Jede Vorschläge!

Danke!

<html>
  <head>
    <style>
      p { background:yellow; font-weight:bold; cursor:pointer; padding:5px; }
      p.over { background: #ccc; }
      span { color:red; }
    </style>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  </head>
  <body>
    <div id="aDiv">
      <p>Click me!</p>
    </div>

    <span></span>
    <script>
      $("body").delegate("p", "click", newPara);
      $("body").undelegate("button", "click", newPara).find("#adiv").html("<p>Click me!</p>");
      function newPara() {
        var html = "<textarea></textarea><button>Save</button>";
        $(this).after(html);
      }
    </script>
  </body>
</html>
War es hilfreich?

Lösung

Meine einzige Vermutung wäre, dass Sie doppelte Anführungszeichen verwenden die Stringliteral zu schaffen, sondern auch innerhalb der Zeichenfolge verwendet, daher ist es früh beendet wird.

Wenn ja dieses:

"<textarea></textarea><button id="someId">Save</button>"

sollte:

'<textarea></textarea><button id="someId">Save</button>'

Beachten Sie, dass ich Apostrophe auf der Außenseite verwendet, so dass die Innen diejenigen nicht schließen Sie die Zeichenfolge.

Probieren Sie es aus: http://jsfiddle.net/QQrHr/

Das Beispiel verwendet Ihren genauen Code. Die einzige Änderung war ich singen Anführungszeichen um die Zeichenfolge zu verwenden.

Sie können auch die inneren Anführungszeichen entkommen, wenn man will:

"<textarea></textarea><button id=\"someId\">Save</button>"

Andere Tipps

Suchen Sie append statt nach? Oder auch http://api.jquery.com/insertAfter/ ?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top