有人可以帮我处理这段代码吗?我正在尝试将某个 div 中的数字重新排列为两列(a 和 b),以使两列的高度大致相同。我疯狂地试图在我的代码中找到问题但没有找到它。它不起作用是有原因的...
<body onload="rearrangeImages();">
<div class="images"><!-- more than one might exist, each with its own figures -->
<figure>
<figcaption>This is the figcaption of this figure. An image is missing for this test.</figcaption>
</figure>
<figure>
<figcaption>This is the figcaption of this figure.</figcaption>
</figure>
<figure>
<figcaption>Another one.</figcaption>
</figure>
</div>
<script>
function rearrangeImages() {
$('.images').each(function() {//should work for each .images independently
$(this).prepend('<div class="column_b"></div>');
$(this).prepend('<div class="column_a"></div>');
$(this).append('<div class="test_div"></div>');
$('figure', this).each(function() {
var height_a = $(this).parent().$(".column_a").height();
var height_b = $(this).parent().$(".column_b").height();
if (height_a > height_b) {
$(this).parent().$(".column_b").append(this);
} else {
$(this).parent().$(".column_a").append(this);
}
$(this).remove();
});
});
}
</script>
</body>
编辑 我发现我自己应该使用这个选择器来选择高度 a 和 b:
var height_a = $(this).parent().children(".column_a").height();
这是我的新 jquery:
function rearrangeImages() {
$('.images').each(function() {
$(this).prepend('<div class="test_div"></div>');
$(this).prepend('<div class="column_b"></div>');
$(this).prepend('<div class="column_a"></div>');
$('figure', this).each(function() {
var height_a = $(this).parent().children(".column_a").height();
var height_b = $(this).parent().children(".column_b").height();
if (height_a > height_b) {
$(this).parent().children(".column_b").append(this);
} else {
$(this).parent().children(".column_a").append(this);
}
});
});
}
现在我想扩展这个功能。伪代码:
if (this is the last figure in .images) {
//place last figure in test_div to measure its height;
if (height_a > height_b + height_of_last_image) {
$(this).parent().children(".column_b").append(this);
} else {
$(this).parent().append(this);
}
} else {
//do the normal stuff see higher
}