Jquery 在另一个div之前创建一个div

Jquery 在另一个div之前创建一个div,jquery,dom,jquery-validation-engine,Jquery,Dom,Jquery Validation Engine,我有一个来自JQuery验证引擎的脚本。我想在另一个div之前设置提示符div if($('#'+methods._getClassName(field.attr("id"))+'_msddHolder').length ){ var prompt = $('<div>'); $('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt); prompt.addClass(methods._get

我有一个来自JQuery验证引擎的脚本。我想在另一个div之前设置提示符div

if($('#'+methods._getClassName(field.attr("id"))+'_msddHolder').length ){
var prompt = $('<div>');
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);
prompt.addClass(methods._getClassName(field.attr("id")) + "formError");
// add a class name to identify the parent form of the prompt
prompt.addClass("parentForm"+methods._getClassName(field.closest('form, .validationEngineContainer').attr("id")));
prompt.addClass("formError");
if($('#'+methods.\u getClassName(field.attr(“id”))+''u msddHolder').length){
变量提示=$('');
$('#'+methods._getClassName(field.attr(“id”))+“\u msddHolder”)。在(提示)之前;
prompt.addClass(方法._getClassName(field.attr(“id”))+“formError”);
//添加类名以标识提示的父窗体
prompt.addClass(“parentForm”+方法._getClassName(field.closest('form,.validationnginecontainer')).attr(“id”);
prompt.addClass(“formError”);
如果我这样做,它将无法工作,如果我手动设置:

$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before('<div>TEST</div>');
$('#'+方法._getClassName(field.attr(“id”))+“_msddHolder”)。在('TEST')之前;

然后它就可以工作了。为什么?

在before方法之后应用类。然后该类将不会应用于元素。您是否尝试过:

var prompt = $('<div><h4>I am a test</h4></div>');
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);
var-prompt=$(“我是一个测试”);
$('#'+methods._getClassName(field.attr(“id”))+“\u msddHolder”)。在(提示)之前;

只是为了查看是否插入了元素?

提示符不是指向使用before()附加的DOM元素的指针,它只是一个包含空div的变量,您需要在将其附加到文档之前应用其类

var prompt = $('<div>');
prompt.addClass("formError");
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);
var提示符=$('');
prompt.addClass(“formError”);
$('#'+methods._getClassName(field.attr(“id”))+“\u msddHolder”)。在(提示)之前;
试试这个:

var prompt = $('<div>').text('test');
var-prompt=$('').text('test');

为什么
prompt.addClass
不起作用?元素是否在树中并不重要。到底什么“不起作用”?如果您对您的问题不明确,我们必须猜测,这对您的帮助不大。您可以做的最好的事情是创建一个演示来重现您的问题。您认为jQuery在插入DOM元素时对它做了什么?为什么
prompt
不再指向插入的元素?您已经完成了这个问题不是吗,也许你可以试着回答一下?为了回答你的问题,jQuery将向存储在提示符var中的div添加一个类,而不是使用before()添加到附加到文档的div中。是的,我正在努力防止错误的答案。一旦我有了所需的信息,我就会回答这个问题。到目前为止,我还没有。提示符引用的元素与插入的元素相同。jQuery不会创建副本(除非选择了多个元素)。证明:。