jquery.inArray()和splice()使用小记

  首先对jquery.inArray()方法做个小介绍:

    jQuery.inArray(value, array) 确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )。返回值:Number
    例如:
    var arr = [ "shtnl", "html", "js", "nodejs" ];  
    $.inArray("js", arr);  //返回 2,
    如果不包含在数组中,则返回 -1;

  splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。(注释:该方法会改变原始数组。而slice()则不会修改原来的数组)

  arrayObject.splice(index,howmany,item1,.....,itemX)

  index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
  item1, ..., itemX 可选。向数组添加的新项目。

    博主前些天在做增加权重功能时,由于需要选择要添加权重值的商品,而这些商品是在一个弹出页里面用datetable显示出来的,而且可以翻页,每个商品前面有一个checkbox,选中了代表需要添加权重值,而且点击下一页时需要上一页的选中状态还在,最后点提交后需要把所有页面里的选中的商品都提交到后台做插入处理。博主用的便是jquery.inArray()和数据遍历来实现的。代码如下:

    首先定义一个全局变量:var searchWeightList=[];

    然后在每个单品前面的checkbox绑上onclick事件,js写上方法:

function selectId(obj){
var checkFlag=$(obj).attr('checked');
var goodsId=$(obj).attr('data-id');
if(checkFlag=="checked"){
if($.inArray(goodsId, searchWeightList)<0){
searchWeightList.push(goodsId);
}
}else{
if($.inArray(goodsId, searchWeightList)>=0){
searchWeightList.splice(jQuery.inArray(goodsId,searchWeightList),1); 
}
}
}

由上面的代码可以看出,我先判断checkbox是否是选中状态,是选中状态我再判断全局变量里面是否存入了这个数据,用$.inArray()方法,如果不存在就push进去;如果checkbox没有被选中,则同样判断全局变量里面是否存在该数据,而此时判断如果存在就拿出去,用的是.splice()方法。
(转)

原文地址:https://www.cnblogs.com/nlyangtong/p/11471195.html