2010-07-07 3 views
0

Я пытаюсь добавить строковую переменную в качестве дочернего узла. Код, который я использую выглядит следующим образомКак использовать Node.insertBefore для добавления содержимого к определенному узлу

$(this).parentNode.parentNode.insertBefore('content',$(this).parentNode) 

Я считаю, что это правильный синтаксис, но я продолжаю получать NOT_FOUND_ERR: DOM Exception 8. Кто-нибудь есть какие-либо указатели?

+0

Вместо того, чтобы использовать строковое «содержание», может быть, вы должны использовать 'createTextNode («содержание»)' и передать его созданный узел как в этом примере: http://javascript.about.com/library/bldom12.htm – AaronLS

+0

Я незнаком с RoR, поэтому я могу ошибаться, но является ли это комбинацией jQuery и обычного JavaScript, который вы используете? –

+0

@ Ryan Kinal: Это правильно. Вопрос не имеет кода ROR, но, возможно, есть применимый трюк ROR? ;-) –

ответ

0
parentElement.insertBefore(el, beforeWhat); 

, если вы хотите вставить новый элемент ДО узла

, если вы хотите добавить новую TextNode к элементу, а нужно

var textNode = document.createTextNode("content"); 
el.appendChild(textNode); 

но что действительно беспокоит меня, что вы, кажется, используете jQuery или некоторые фреймворки и используете для них методы DOM. Потому что это не сработает.

Вы должны использовать свои собственные методы, то, как:

$(this).append("content"); 
+0

Я был слишком быстр, чтобы позвонить вам, я прошу прощения за это. Оказалось, что прототип переопределяет оператор $(), поэтому, когда я думал, что использую jQuery, это был прототип, поэтому не использовались методы, которые я пытался работать. Чтобы использовать их вместе, я ставил var $ j = jQuery.noConflict() в верхней части моего файла application.js – Teddy

+0

Да, мой инстинкт был в некотором роде. Рад, что вы это решили. :) – galambalazs

Смежные вопросы