Javascript after()在注入的HTML周围加引号

Javascript after()在注入的HTML周围加引号,javascript,jquery,html,Javascript,Jquery,Html,下面是Javascript: var bubbles = $('.history .bubble'); bubbles[bubbles.length-1].after('<div class="bubble me">' + text + '</div>'); var-bubbles=$('.history.bubble'); 气泡[bubbles.length-1]。在(“”+文本+“”)之后; 以下是HTML: 你知道为什么我插入的东西都用双引号括起来了吗?用类似

下面是Javascript:

var bubbles = $('.history .bubble');
bubbles[bubbles.length-1].after('<div class="bubble me">' + text + '</div>');
var-bubbles=$('.history.bubble');
气泡[bubbles.length-1]。在(“”+文本+“”)之后;
以下是HTML:


你知道为什么我插入的东西都用双引号括起来了吗?

用类似
.last()
.eq()

演示
var text=“X”;
var-bubbles=$('.history.bubble');
变量数量=气泡长度-1;
气泡.eq(数量).after(`${text}`);
泡泡.last()。在(`${text}`)之后

X
X

接受DOM节点元素或字符串之后-在您的情况下,您传递的是一个字符串,因此它将其视为DOM节点元素并将其打印出来()。如果您传递一个Dom节点对象,它的行为将与您期望的一样。试试这个:

var div = document.createElement("div");
div.innerHTML="test";
bubbles[bubbles.length-1].after(div);

此语法:
bubbles[bubbles.length-1]

…获取原始DOM节点,而不是jQuery对象

这意味着您正在呼叫而不是

他们的行为不同

如果将字符串传递给jQuery方法,它将尝试将其解析为HTML,然后插入生成的DOM节点

如果将字符串传递给DOM方法,它会将其转换为text节点并插入该节点

您希望调用jQuery方法,而不是DOM方法,因此使用
last()
获取包装最后一个DOM节点的jQuery对象,而不是用于获取原始DOM节点的括号表示法:

bubbles.last().after('<div class="bubble me">' + text + '</div>');
bubbles.last().after(“”+text+“”);

我认为jQuery
after()
与JS版本不同,答案是指使用原生JS after,我想OP在这种情况下使用jQuery版本更合适