Внутренняя упаковка прототипа

Я искал документацию и пробовал различные методы, но не нашел подходящего метода для достижения следующих манипуляций с домом:

<h3>hello</h3> 

to

<h3><a href="#">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='#'>" + element.innerHTML + "</a></h3>");
});
person Frédéric Hamidi    schedule 21.03.2012

Prototype wrap действительно работает с текстовыми узлами, но не говорит об этом ясно, текстовые узлы также не расширяются обычным образом. Также селектор $$ исключает собственные текстовые узлы, поэтому вам нужно получить их самостоятельно.

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