我有一个从数据库中获取行的表。每一行都包含一个输入和一个复选框。
在第一行中插入值后,然后单击复选框,此值将分配给下面的所有行。
但是如果我开始在第二行或其他行中插入值并单击它旁边的复选框,则该操作不会像第一行那样工作。
如何在单击下面所有行旁边的复选框后分配输入值,而不是输入上方的行?
谢谢大家的进步。
<table class="table table-striped tabinp hideal">
<tr>
<th>Price</th>
</tr>
<?php
foreach($prices as $row)
{
?>
<tr>
<td>
<div class="input-group">
<span class="input-group-addon">$</span>
<input type="text" class="price form-control">
<span class="input-group-addon"><input class="put-all-price" type="checkbox"></span>
</div>
</td>
</tr>
<?php
}
?>
</table>
<script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
<script>
$(".put-all-price").on("click", function() {
var price = $(".price").val();
if ($(this).is(":checked")) {
$('.price').each(function() {
$(this).val(price);
});
} else {
$('.price').each(function() {
$(this).val("");
});
}
})
</script>
答案 0 :(得分:1)
首先:在每行的代码中,您总是从第一行中选择价格。你可以用这个:
var price = $($(this).parents()[1]).find(".price").val();
第二:迭代仅 的元素,您可以使用 .nextAll()。
$($(this).parents()[3]).nextAll().find(".price").each(function() {
$(this).val(price);
});
请注意, .parents()[index] 取决于您的标记。