从尚未注册到 DOM 的 jquery 对象中删除元素

Remove element from jquery object not yet registered to DOM

本文关键字:对象 jquery 删除 元素 DOM 注册      更新时间:2023-09-26

我正在构建一个使用表单集合的Symfony2应用程序,用户可以在其中动态添加表单。为了动态添加表单,Symfony2为我们提供了一种在javascript中获取表单模板的方法,我们只需要用当前索引替换__name__占位符即可。

由于我的表单需要一些非常具体的布局,我需要将错误与小部件合并,现在当我想从模板中删除错误时,如果它被初始化了,我就会陷入困境。

我可以这样简化我的问题:

/* js */
var test = $('<div><p class="error">Dirty stuff</p><p>Clean stuff</p></div>').remove('.error');
$('#test').append(test);
<!-- html -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="test"></div>

如您所见,输出为:

Dirty stuff
Clean stuff

而不仅仅是:

Clean stuff

我的问题:

如何从我的 test var 中删除与我的.error选择器匹配的所有内容?

我想你是说你想这样做:

var test = $('<div><p class="error">Dirty stuff</p><p>Clean stuff</p></div>');
test.find(".error").remove();
$("#test").append(test); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="test"></div>

许多不同的表达方式,但基本上在创建元素之后,但在我们附加它们之前,我们会执行一个.find()来找到.error元素,然后删除它们。

然后我们简单地附加原始test,因为它的.error后代被删除了。

我会添加到 dom 中并在稍后删除:

$('#test').append('<div><p class="error">Dirty stuff</p><p>Clean stuff</p></div>');
$('.error').remove();