嗯......标题可能看起来很模糊但问题对我来说有点新鲜。
我有一个复选框,使用循环设置n次(在php中)。
<input class="shiftt_class" type="checkbox" name="multiSelect[]" value="">
并且设置如下。
<?php foreach($depts['shifts'] as $shfts){?>
<span>
<input class="shiftt_class" type="checkbox" name="multiSelect[]" value="<?php echo $shfts['shift_id'];?>">
<select name="nottime<?php echo $shfts['shift_id']; ?>" class="notification_time_class">
<option value="">Set Time</option>
<option value="11:00" >11:00</option>
<option value="12:00" >12:00</option>
<option value="13:00">13:00</option>
</select>
</span>
<?php }?>
点按一下按钮,我尝试根据我使用jQuery的JSON响应设置选中的复选框。
我的JSON回复:
[{"shift_id":"2"},{"shift_id":"3"}]
jQuery代码:
如果shifts
是我的JSON响应,那么
if(shifts.length>0)
{
$.each(shifts,function(index,shift)
{
if($(".shiftt_class").val()==shift.shift_id)
{
alert('ddd');
$(".shiftt_class").prop("checked", true);
}
});//end of each function
}
我收到警报,但没有设置复选框。 我也要尝试相同的方法来设置选择框。我哪里出错了?
更新:我的jQuery函数
$.ajax({
url: post_url,
data:{staff_id : staff_id,csrf_test_name : csrf_token},
type: "POST",
dataType: 'json',
beforeSend: function ( xhr ) {
//Add your image loader here
$('#select_loader').show(); // Ajax Loader Show
},
success: function(shifts)
{
$('#select_loader').hide();
$.each(shifts, function (index, shift) {$('.shiftt_class[value="' + shift.shift_id + '"]').prop("checked", true);
});
}
});//end of ajax
答案 0 :(得分:3)
问题是因为.shiftt_class
块中的each()
选择器正在检索所有元素。致电val()
就是令人困惑的问题。您应该查找.shiftt_class
元素,其中value
与迭代中的shift_id
匹配。为此,您可以使用属性选择器。试试这个:
$.each(shifts, function (index, shift) {
$('.shiftt_class[value="' + shift.shift_id + '"]').prop("checked", true);
});
另请注意,对返回数据的length
检查是多余的,因为无论如何循环都不会在空数组上执行。