首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装元素数组

包装元素数组
EN

Stack Overflow用户
提问于 2010-12-28 13:46:38
回答 3查看 2.2K关注 0票数 6

我正在尝试编写一个不起眼的脚本,我不想添加任何不需要的html,除非启用了javascript。

使用MooTools 1.2.4,是否可以用例如: tags来包装一个元素数组?

预期效果:

之前:

代码语言:javascript
复制
<p>Something</p>
<p>Something1</p>
<p>Something2</p>
<p>Something3</p>

如意算盘javascript代码:

代码语言:javascript
复制
$$('p').wrapWith(new Element('div', {id: 'master'}));

之后:

代码语言:javascript
复制
<div id="master">
  <p>Something</p>
  <p>Something1</p>
  <p>Something2</p>
  <p>Something3</p>
</div>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-28 14:14:47

在IRC通道上应答。为子孙后代添加答案。

迭代元素并使用wraps (Fiddle):

代码语言:javascript
复制
var els = $$('p'),
    div = new Element('div', {id: 'master'});

els.each(function(e){ div.wraps(e) });

或者创建一个接受Elements实例(Fiddle)的Element方法(如wraps ):

代码语言:javascript
复制
Element.implement('surround', function(els, where){
    var elements = Array.slice(els), len = elements.length;
    for (var i = 0; i < len; i++){
        this.wraps(elements[i], where);
    }
    return this;
});

new Element('div', {id: 'master'}).surround($$('p'));
票数 5
EN

Stack Overflow用户

发布于 2010-12-28 14:08:29

这似乎起作用了:

示例: http://jsfiddle.net/9Pqv9/

代码语言:javascript
复制
var p = $$('p');
new Element('div',{id:'master'}).inject(p[0],'before').adopt(p);

在第一个p之前Inject new Element,然后让它adopt整个p元素集。

或者这个,wraps第一个p,然后采用这个集合:

示例: http://jsfiddle.net/9Pqv9/1/

代码语言:javascript
复制
var p = $$('p');
new Element('div', {id: 'master'}).wraps(p[0]).adopt(p);
票数 0
EN

Stack Overflow用户

发布于 2011-01-16 20:36:05

我喜欢keeto的例子。这里有一个不同的解决方案:

代码语言:javascript
复制
var div = new Element('div', {id: 'master'}); 
div.inject(document.body);
$$('p').inject(div);

http://jsfiddle.net/tofu/9wPp5/5/

或者在MooTools 1.3中使用一行程序

代码语言:javascript
复制
$$('p').inject(new Element('div#master').inject(document.body));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4543946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档