2013-02-19 2 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

Что именно "не будет работать"? Если вы не знаете о своей проблеме, мы должны угадать, у которой меньше шансов оказать вам какую-либо помощь. –

+1

Лучшее, что вы можете сделать, это создать демо-версию http://www.jsfiddle.net/, которая воспроизводит вашу проблему. –

ответ

0

Вы применяете класс после своего метода до. Класс не будет применяться к вашему элементу. Вы пробовали:

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

Просто, чтобы узнать, есть ли у вас элемент, в котором вы работаете?

+0

Почему «prompt.addClass» не работает? Не имеет значения, находится ли элемент в дереве или нет. –

+0

О да, я стараюсь использовать jsfiddle, это сработало! мой плохой жаль! –

0

запрос не является указателем на элемент DOM, который вы добавили с помощью функции before(), это просто переменная, содержащая пустой div, вам необходимо применить ее класс перед добавлением его в документ.

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

Как вы думаете, что делает jQuery с элементом DOM, когда он вставлен? Почему 'prompt' больше не указывает на вставленный элемент? –

+0

Вы во всем этом вопросе, не так ли, возможно, попробуйте ответить на него? Чтобы ответить на ваш вопрос, jQuery добавляет класс в div, который хранится в приглашении var, а не в div, который был добавлен к документу, используя before(). – StuR

+0

Да, я пытаюсь предотвратить неправильные ответы. И я отвечу на вопрос, как только у меня будет информация, в которой я нуждаюсь. Пока что нет. Элемент, называемый 'prompt', совпадает с тем, который вставлен. jQuery не создает копию (если не выбрано несколько элементов). Доказательство: http://jsfiddle.net/EJjdY/. –

0

Попробуйте это:

var prompt = $('<div>').text('test'); 
Смежные вопросы