我有一个包含像
这样的位置数组的数组var pre_locations = [];
pre_locations.push(result.locations);
返回以下内容
["BB,BD,BL,CA"]
但现在我有一些具有相同值的复选框,因此如果数组中的位置上的任何值与复选框具有相同的值,请将复选框标记为选中。但我有以下,它不工作,我不知道为什么
$(".postcode_check").each(function(){
if($.inArray($(this).val(), pre_locations) > 0){
$(this).prop('checked', true);
}
});
答案 0 :(得分:0)
我相信您的结果中的位置会以逗号分隔的字符串形式返回。这是基于上面的场景给出的假设。只需拆分结果并修复条件以检查> -1
。
这很好用。
var pre_locations = result.locations.split(',');
$(".postcode_check").each(function(){
if ($.inArray($(this).val(), pre_locations) > -1) {
$(this).prop('checked', true);
}
});
var result = { locations : "BB,BD,BL,CA" };
$(document).ready(function() {
createCheckboxes(['A','B','C','D'], 2); // Generate 16 checkboxes (AA->DD)
var pre_locations = result.locations.split(',');
$(".postcode_check").each(function(){
if ($.inArray($(this).val(), pre_locations) > -1) {
$(this).prop('checked', true);
}
});
});
// [IGNORE] These function are used to generate the checkboxes.
function createCheckboxes(alphabet, size) {
$.each(permutations(alphabet, size), function(i, p) {
$('body').append($('<div>').addClass('cb-wrapper')
.append($('<label>').addClass('cb-label').html(p.join('')))
.append($('<input type="checkbox">').addClass('postcode_check').val(p.join(''))));
if (i % alphabet.length == alphabet.length-1) $('body').append($('<br>'));
});
}
function permutations(series, size) {
return zeroFill(Math.pow(series.length,size)).map(function(r,i) {
return zeroFill(size).map(function(c,j) {
return series[Math.floor(i/Math.pow(series.length,j))%series.length];
}).reverse();
});
}
function zeroFill(n) {
return new Array(n+1).join('0').split('');
}
&#13;
.cb-wrapper, .cb-label { display: inline-block; }
.cb-wrapper { width: 60px; }
.cb-label { display: inline-block; width : 24px; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)