需要将所有类名保存为包装文本到另一个div。只显示最后一个类名,但在控制台日志中它正在运行。无法弄清楚出了什么问题。
$(".score" ).children('div').each(function(arr) {
clsas = $(this).attr('class');
$('.part-list').html(clsas);
clsas = clsas.replace(/_/gm, " ")
.replace(/(\d{1,}) (\d{1,})/gm, "$1, $2")
.replace(/stff /gm, "")
.replace(/(\B)(\d{1,})/gm, "$1 $2");
console.log(clsas);
}).each(function() {
$('.part-list').html( "<div class='instrument'>" + clsas + "</div>" );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="part-list"></div>
<div class="score">
<div class="stff_Flute1_2"></div>
<div class="stff_Oboe_1_2"></div>
<div class="stff_Clarinet_1_2"></div>
</div>
答案 0 :(得分:1)
$ .html(string)设置html的值,因此对于每个循环,将html设置为其他内容。
在你的例子中,它将被设置为长笛,然后是双簧管,然后是单簧管。
解决这个问题的方法是创建一个新元素并将其附加到您想要的位置。
实施例
var txt1 = "<div class='instrument'>" + clsas + "</div>" ; // Create element with HTML
$('.part-list').append(txt1); // Append the new element
答案 1 :(得分:0)
$(".score" ).children('div').each(function( arr ) {
clsas = $(this).attr('class');
clsas = clsas.replace(/_/gm, " ").replace(/(\d{1,}) (\d{1,})/gm, "$1, $2").replace(/stff /gm, "").replace(/(\B)(\d{1,})/gm, "$1 $2");
$('.part-list').append("<div class='instrument'>" + clsas + "</div><br>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="part-list"></div>
<div class="score">
<div class="stff_Flute1_2"></div>
<div class="stff_Oboe_1_2"></div>
<div class="stff_Clarinet_1_2"></div>
</div>