2015-04-23 55 views
3

我有下面这段代码工作正常。但是,在此,当点击第一个元素[节点1]时,它被复制到目标div但没有父'UL'。当我直接点击子节点时也是如此。我的意思是,如果我点击节点1.1,节点1.2等,那么这些应该被捕获在单个“UL”元素内。即,如何为jquery中的所有子节点添加单个父元素

这下面应该改为

`<li><span>Node 1.1</span></li><li><span>Node 1.2</span></li>` 

(这就是我现在越来越) 作为

<UL><li><span>Node 1.1</span></li><li><span>Node 1.2</span></li></UL> 

同样应该发生,如果选择“节点1”也。

有什么想法?请帮忙。

http://jsfiddle.net/fjaLsnLh/7/请在此小提琴链接上进行修改。

+2

为什么不'ul'添加到目标股利和再追加,像这样:http://jsfiddle.net/fjaLsnLh/9/ –

+0

@ShaunakD,我遵循你的想法,并使我的代码工作,谢谢! – User123

+0

很高兴为您效劳。 –

回答

1

使用jQuery的wrapAll

$('li').wrapAll('<ul></ul>'); 

的jsfiddle:http://jsfiddle.net/fjaLsnLh/12/

+0

嗨,你的信息是好的,但是,它不能按预期工作,请你改变'jsfiddle'中的代码吗? – User123

+0

以何种方式无法按预期工作?你期望它做什么,它有点做什么? –

+0

实际上,当用户单击每个复选框时,我正在创建这个条件,每当用户单击复选框时,它应该添加'ul'来包装所有'li'。我应该在代码片段上粘贴上面的代码?我很困惑.. – User123

0

您可以使用jQuery方法wrapAll()来实现这一目标。

语法:

$(selector).wrapAll(wrappingElement); 
$('li').wrapAll('<ul></ul>'); 

如:

$(document).ready(function() { 
 
    $("button").click(function() { 
 
    $("li").wrapAll("<ul></ul>"); 
 
    }); 
 
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
 

 
<body> 
 

 
    <UL> 
 
    <li><span>Node 1.1</span> 
 
    </li> 
 
    <li><span>Node 1.2</span> 
 
    </li> 
 
    </UL> 
 
    <button>Wrap a div element around all p elements</button> 
 

 
</body>

+0

你能否让我在JSfiddle链接中做这项工作,我复制? – User123

相关问题