Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can solve, or at least <em>avoid</em>, the problem by simply using <code>after()</code> in place of <code>append()</code>:</p> <pre><code>$("li span").last().after("&lt;span&gt;C&lt;/span&gt;"); </code></pre> <p><div class="snippet" data-lang="js" data-hide="true" data-console="false" data-babel="false"> <div class="snippet-code snippet-currently-hidden"> <pre class="snippet-code-js lang-js prettyprint-override"><code>$("li span").last().after("&lt;span&gt;C&lt;/span&gt;"); $('#generatedHTML').text($('li').html());</code></pre> <pre class="snippet-code-css lang-css prettyprint-override"><code>#generatedHTML { white-space: pre-wrap; font-family: mono; padding: 0.5em; margin: 0; background-color: #eee; } #generatedHTML::before { content: "Created HTML: "; color: #999; display: block; }</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt; &lt;ul&gt; &lt;li&gt; &lt;span&gt;A&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt; &lt;div id="generatedHTML"&gt;&lt;/div&gt;</code></pre> </div> </div> </p> <p>Also, please note that I corrected your HTML: an <code>li</code> is <em>only</em> valid when a direct-child of a <code>ul</code> or <code>ol</code> (it should not be contained within <em>any</em> other element).</p> <p>Also, you could use a somewhat more-complicated alternative:</p> <pre><code>$("li").append("&lt;span&gt;B&lt;/span&gt;").contents().filter(function(){ return this.nodeType === 3; }).remove(); </code></pre> <p><div class="snippet" data-lang="js" data-hide="true" data-console="false" data-babel="false"> <div class="snippet-code snippet-currently-hidden"> <pre class="snippet-code-js lang-js prettyprint-override"><code>$("li").append("&lt;span&gt;B&lt;/span&gt;").contents().filter(function(){ return this.nodeType === 3; }).remove(); $('#generatedHTML').text($('li').html());</code></pre> <pre class="snippet-code-css lang-css prettyprint-override"><code>#generatedHTML { white-space: pre-wrap; font-family: mono; padding: 0.5em; margin: 0; background-color: #eee; } #generatedHTML::before { content: "Created HTML: "; color: #999; display: block; }</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt; &lt;ul&gt; &lt;li&gt; &lt;span&gt;A&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt; &lt;div id="generatedHTML"&gt;&lt;/div&gt;</code></pre> </div> </div> </p> <p>While it's been some time, I thought it was worth also adding a plain JavaScript version of the above:</p> <pre><code>let htmlToAppend = '&lt;span&gt;B&lt;/span&gt;', span = document.querySelector('li span'); span.insertAdjacentHTML( 'afterend', htmlToAppend ); document.querySelector('#generatedHTML').textContent = span.parentNode.innerHTML; </code></pre> <p><div class="snippet" data-lang="js" data-hide="true" data-console="false" data-babel="false"> <div class="snippet-code snippet-currently-hidden"> <pre class="snippet-code-js lang-js prettyprint-override"><code>let htmlToAppend = '&lt;span&gt;B&lt;/span&gt;', span = document.querySelector('li span'); span.insertAdjacentHTML( 'afterend', htmlToAppend ); document.querySelector('#generatedHTML').textContent = span.parentNode.innerHTML;</code></pre> <pre class="snippet-code-css lang-css prettyprint-override"><code>#generatedHTML { white-space: pre-wrap; font-family: mono; padding: 0.5em; margin: 0; background-color: #eee; } #generatedHTML::before { content: "Created HTML: "; color: #999; display: block; }</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;ul&gt; &lt;li&gt; &lt;span&gt;A&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt; &lt;div id="generatedHTML"&gt;&lt;/div&gt;</code></pre> </div> </div> </p> <p>References:</p> <ul> <li>JavaScript: <ul> <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector" rel="nofollow noreferrer"><code>document.querySelector()</code></a>.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML" rel="nofollow noreferrer"><code>Element.innerHTML</code></a>.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML" rel="nofollow noreferrer"><code>Element.insertAdjacentHTML()</code></a>.</li> <li><a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let" rel="nofollow noreferrer"><code>let</code> statement</a>.</li> <li><a href="https://developer.mozilla.org/en-US/docs/DOM/Node.nodeType" rel="nofollow noreferrer"><code>Node.nodeType</code></a>.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent" rel="nofollow noreferrer"><code>Node.textContent</code></a>.</li> </ul></li> <li>jQuery: <ul> <li><a href="http://api.jquery.com/after/" rel="nofollow noreferrer"><code>after()</code></a>.</li> <li><a href="http://api.jquery.com/append/" rel="nofollow noreferrer"><code>append()</code></a>.</li> <li><a href="http://api.jquery.com/contents/" rel="nofollow noreferrer"><code>contents()</code></a>.</li> <li><a href="http://api.jquery.com/filter/" rel="nofollow noreferrer"><code>filter()</code></a>.</li> <li><a href="http://api.jquery.com/last/" rel="nofollow noreferrer"><code>last()</code></a>.</li> <li><a href="http://api.jquery.com/remove/" rel="nofollow noreferrer"><code>remove()</code></a>.</li> </ul></li> </ul>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload