Прототип на вътрешна обвивка

Претърсих документацията и опитах различни техники, но не намерих подходяща техника за постигане на следната манипулация на dom:

<h3>hello</h3> 

to

<h3><a href="/bg#">hello</a></h3>

Благодаря.


person James Westgate    schedule 21.03.2012    source източник


Отговори (2)


Доколкото ми е известно, Prototype няма еквивалент на wrapInner() на jQuery. Можете обаче да го симулирате с innerHTML:

$$("h3").each(function(element) {
    element.replace("<h3><a href='/bg#'>" + element.innerHTML + "</a></h3>");
});
person Frédéric Hamidi    schedule 21.03.2012

wrap на Prototype действително работи върху текстови възли, но не казва това ясно, нито пък текстовите възли се разширяват по обичайния начин. Също така $$ селекторът изключва естествени текстови възли, така че трябва да ги извлечете сами.

var h3 = $$('h3').first(),
    text = h3.childNodes.first();
Element.wrap(text, 'a', { href: '#' });
person clockworkgeek    schedule 22.03.2012