我正在加载以前保存的表单,以便使用我的数据库中保存的值进行编辑。我试图让jQuery确定页面加载时复选框的状态。
这就是我所做的:
我加载了保存的值(0或1),如果值== 1,则使用php检查框。
<tr class="line">
<td class="text-center"><input class="tax" type="checkbox" name="taxable"
value="{{$item->taxable}}" <?php echo ($item->taxable == 1) ? 'checked="checked"' : ''; ?>/
</td>
</tr>
接下来,我尝试使用jQuery查看是否在document.ready()上选中了.tax复选框,然后将新类添加到该行:
$(document).ready(function(){
if ($('.tax').is(':checked')){
$(this).closest('tr').addClass("extraClass");
};
//more jquery
我的问题:.is(':checked')
文件是否准备就绪?如果没有,在页面加载时查看框是否被检查的正确方法是什么?
如果该部分是正确的,$(this).closest('tr')
是将新类添加到行的正确方法吗?
答案 0 :(得分:2)
this
不会是.tax
。它将是document
。
你应该说:
$('.tax:checked').closest('tr').addClass('extraClass');
$('.tax:checked').closest('tr').addClass('extraClass');
&#13;
.extraClass {
background-color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr class="line">
<td class="text-center"><input class="tax" type="checkbox" name="taxable"
value="1" checked="checked"
</td>
</tr>
<tr>
<td class="text-center"><input class="tax" type="checkbox" name="taxable"
value="0"
</td>
</tr>
</table>
&#13;
答案 1 :(得分:1)
您需要存储$('.tax')
($(this)
范围不适用于if块)。所以,可能是这样的:
$(function(){ // aka $(document).ready(function(){
var $tax = $('.tax');
if ($tax.is(':checked')){
$tax.closest('tr').addClass('extraClass');
}
});
更简洁地说,您可以使用:
$(function(){
$('.tax:checked').closest('tr').addClass('extraClass');
});