如何在jQuery中为所有子节点添加单个父元素

3
我有以下代码可以正常工作。但是,当我点击第一个元素[Node 1]时,它会被复制到目标div中,但没有父级'UL'。当我直接点击子节点时也发生了同样的情况。我的意思是,如果我单击Node 1.1、Node 1.2等,则应该在单个'UL'元素内捕获它们。即,下面的代码应更改为:
`<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”,应该发生相同的情况。 有什么想法吗?请帮忙。 请在此fiddle链接上进行修改。 http://jsfiddle.net/fjaLsnLh/7/

2
为什么不向目标div添加ul,然后像这样追加:http://jsfiddle.net/fjaLsnLh/9/ - Shaunak D
@ShaunakD,我按照你的想法修改了我的代码,现在它可以正常工作了,谢谢! - User123
3个回答

1

你好,你提供的信息没问题,但是它并没有按照预期工作。请问你能否在 'jsfiddle' 中修改代码呢? - User123
它为什么没有按预期工作?你期望它做什么,但它没有做到? - David Thomas
实际上,我正在创建此条件以在用户单击每个复选框时添加“ul”来包装所有的“li”。我应该把上面的代码粘贴到代码片段的哪里?我很困惑... - User123
@madalinivascu,当你取消选中该框时,它应该将所有列表恢复到初始状态,但是目前来看,你的代码并没有按预期工作。你能否请看一下这个问题? - 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>


请问您能否将此代码在我复制的JSFiddle链接中运行起来吗? - User123

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接