jQuery数组解释

时间:2010-07-21 11:31:07

标签: jquery arrays

我构造了一个数组,我稍后会用它来比较一些值。 我使用这段代码来构造“myArray”,我将在稍后使用它:

var optionTexts = [];  
$('#stripeMeSubSubCat tr').each(function(){

 if ($(this).find('input:checkbox.subsubcat_chkclass:not(:checked)').length == 0)
 {
   subsubrow_cat_id_no = parseInt($(this).closest("tr").attr("id")); 

   optionTexts.push(subsubrow_cat_id_no);
  };   

 });

var myArray = optionTexts.join(', ');
alert("myArray = "+myArray);

这里我使用myArray进行比较:

$('#stripeMeSubSubCat tr').each(function(){  

     myindex = $.trim($(this).closest("tr").attr("id"));
     var arr = [myArray];

     //var arr = [0, 439, 52, 53];

     myindex = parseInt(myindex);

     alert(myindex);
     alert(arr);

     if ((jQuery.inArray(myindex, arr)) == -1) {
       var equal = "FALSE";
     } else {
       var equal = "TRUE";
     $("#stripeMeSubSubCat tr[id='" + myindex + "'] input").attr('checked', true);
     };

     alert(equal);
 });

与上面的代码一样,它总是返回FALSE。 但是,如果不使用第一块代码并且只启用注释掉的var arr(我将数组设置为固定数据),则返回TRUE。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

myArray是一个字符串变量,它是通过连接optionsText数组的元素而不是一组元素创建的。你应该检查optionsText而不是myArray。

if ((jQuery.inArray(myindex, optionsText)) == -1) {

顺便说一句,为什么要将变量equal设置为字符串“FALSE”或“TRUE” - 为什么不简单地将其设置为falsetrue(布尔值) ?

答案 1 :(得分:0)

myArray是一个字符串,是

的结果
var myArray = optionTexts.join(', ');

稍后,您尝试将其更改为包含以下内容的数组:

var arr = [myArray];

实际上会创建一个数组,其中myArray字符串作为第一个也是唯一的元素。请改用split(", ")

var arr = myArray.split(", ");