我有一系列div标签如下:
<div>
<div class="MB_SLOT" id="slot1"></div>
<div class="MB_SLOT" id="slot2"></div>
<div class="MB_SLOT" id="slot3"></div>
<div class="MB_SLOT" id="slot4"></div>
</div>
我想将MB_SLOT
元素放入无序列表(ul
)但是所有内容(包括包含div)都是由我无法控制的API和生成的数量生成的元素因页面而异。
如果我使用j$( ".MB_SLOT" ).wrap( "<li></li>" );
我可以包装每个MB_SLOT
元素,但我不知道如何将其包装在<ul></ul>
有人可以就实现这一目标的最佳方法提出建议吗?
答案 0 :(得分:2)
给你的李一个更具特异性的课程
$( ".MB_SLOT" ).wrap( "<li class='list-item'></li>" );
然后使用.wrapAll()来包装“list-item”的所有实例
$( ".list-item" ).wrapAll( "<ul></ul>" );
答案 1 :(得分:0)
父级是否始终相同,是<div>
元素?
如果是这样,你可以使用:
var parent = $( ".MB_SLOT:first").parents("div"), // find parent <div>
ul = $("<ul></ul>"); // setup <ul> element
parent.prepend( ul ); // add <ul> element as first child in parent
$( ".MB_SLOT" ).appendTo( ul ); // move .MB_SLOT as children of <ul>
$( ".MB_SLOT" ).wrap( "<li></li>" ); // wrap .MB_SLOT in <li>
答案 2 :(得分:0)
您可以执行以下操作(将div
重建为li
s)https://jsfiddle.net/rwghggx4/2/
我可能会弄错,但是这个例子“构建”li而不是仅仅将div
包裹在li
中的原因是因为你不应该放div
s li
s。
$(document).ready(function() {
function transformToUL() {
var html = "<ul>";
$('.MB_SLOT').each(function() {
console.log($(this));
html += "<li class='MB_SLOT' id='" + $(this).attr('id') + "'>" + $(this).text() + "</li>";
});
$('.container').append(html);
$('.changeToUL').hide();
}
transformToUL();
});