如何从jquery和自定义元素/标签中一起添加元素?

时间:2017-11-20 16:46:08

标签: javascript jquery html dom

假设我从jquery选择器获得了一个元素并存储在一个变量中,现在我想在对该变量执行一些DOM操作之前向该变量添加一些自定义元素。

例如,如果我这样做:

var placeHolder = $('.class-name').children().eq(0).clone();

如果孩子是输入标签,我会得到这样的数组:

[input#link, prevObject: r.fn.init(1)]

我认为上面代表选定的输入标签,现在我想附加另一个标签,如:

placeHolder = placeHolder + '<span class="delete-btn">X</span>';

现在我想将此placeHolder添加回DOM。但是当我这样做时,$('.some-class').append(placeHolder);在控制台中抛出错误。

这是错误:

jquery-3.2.1.slim.min.js:2 Uncaught Error: Syntax error, unrecognized 
expression: [object Object]<span class="delete-btn">X</span>

奇怪的是,它以placeHolder格式向DOM添加[object Object]。那么如何添加从jquery选择器和一些自定义标签(如第三个突出显示的行)获得的元素,然后添加回DOM?

2 个答案:

答案 0 :(得分:0)

通过将span添加到占位符,可以将其转换为字符串。不要尝试连接html,只需附加像

这样的对象
$('.some-class')
  .append(placeHolder)
  .append('<span class="delete-btn">X</span>');

答案 1 :(得分:0)

你将占位符(一个jQuery对象)和一个字符串(你的span)连接起来并将它们传递给jQuery,然后jQuery将整个事物视为一个字符串。

使用.get(0),这应该可以解决您的问题:

var placeHolder = $('.class-name').children().eq(0).clone().get(0);