jquery inarray总是回归真实

时间:2015-02-11 15:33:55

标签: javascript jquery arrays

我有一个包含像

这样的位置数组的数组
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);
        }
});

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

您需要使用concat代替push

push()方法将新元素添加到数组的末尾:

var a = [1, 2];
a.push([3, 4]);
// a is [1, 2, [3, 4]]

concat()通过连接数组创建一个新数组:

var a = [1, 2];
var b = a.concat([3, 4]);
// b is [1, 2, 3, 4]

Demo