2013-02-19 68 views
-1

我有一个来自JQuery验证引擎的脚本。我想在另一个div之前设置提示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"); 

如果我不喜欢这样它不会工作,如果我手动设置此:

$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before('<div>TEST</div>'); 

然后,它的工作原理。为什么?

+0

究竟 “将无法正常工作”?如果你没有具体说明你的问题,我们不得不猜测,这对你没有任何帮助。 – 2013-02-19 10:20:26

+1

你可以做的最好的事情是创建一个http://www.jsfiddle.net/演示,它可以再现你的问题。 – 2013-02-19 10:37:54

回答

0

您在之前的方法之后应用类。该课程将不适用于您的元素。你有没有尝试过:

var prompt = $('<div><h4>I am a test</h4></div>'); 
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt); 

只是为了看看你是否有一个元素insered?

+0

为什么'prompt.addClass'不起作用?元素是否在树中并不重要。 – 2013-02-19 10:19:09

+0

哦,是的,我尝试了一个jsfiddle,它的工作!我很抱歉! – 2013-02-19 10:23:09

0

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

var prompt = $('<div>'); 
prompt.addClass("formError"); 
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt); 
+0

你认为jQuery在插入DOM元素时做了什么?为什么'提示'不再指向插入的元素? – 2013-02-19 10:24:21

+0

你是这个问题都不是你,也许尝试回答它?为了回答你的问题,jQuery将存储在提示符var中的div添加到div中,而不是添加到使用before()附加到文档的div中。 – StuR 2013-02-19 10:31:53

+0

是的,我试图防止不正确的答案。一旦获得我需要的信息,我会回答这个问题。到目前为止,我还没有。 'prompt'引用的元素与插入的元素相同。 jQuery不会创建副本(除非选择多个元素)。证明:http://jsfiddle.net/EJjdY/。 – 2013-02-19 10:35:02

0

试试这个:

var prompt = $('<div>').text('test'); 
相关问题