2013-02-19 78 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'); 
相關問題