gpt4 book ai didi

javascript - 使用 jQuery 递归更改元素类型,为什么它部分起作用?

转载 作者:可可西里 更新时间:2023-11-01 14:45:28 25 4
gpt4 key购买 nike

源节点:

 <div class="tree">
<div class="item"><!-- replaced OK -->
<a href class="toggle">+</a>
<a href class="name">Name</a>
<div class="collapse">
<div class="item"><!-- this wouldn't be replaced ?! --></div>
</div>
</div>
<div class="item"></div><!-- replaced OK -->
</div>

我需要克隆这个节点并递归地替换每个节点 <div class="item"><li class="item"><div class="collapse"><ul class="collapse"> .

对于项目,这仅适用于第一级:

var $clone = $('.tree').clone(false);

$clone
.find('.item')
.replaceWith(function () {
return $('<li>'+$(this).html()+'</li>');
});

我的代码有什么问题吗?

最佳答案

您的 replace with 函数会将第一个 .item 中的 html 替换为新的 html 元素。所以 .find() 返回的数组中的另一个 .item 不存在了。你可以把它放在一个 while 循环中,所以所有的 .item 都被替换为 li:

var $items=$clone.find(".item");
while($items.length>0){
$items.replaceWith(function () {
return $('<li>'+$(this).html()+'</li>');
});
$items=$clone.find(".item");
}

JSFiddle:http://jsfiddle.net/j14f0bx9/

关于javascript - 使用 jQuery 递归更改元素类型,为什么它部分起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com