zoukankan      html  css  js  c++  java
  • 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()方法。
    (转)

  • 相关阅读:
    selenium 笔记 二次封装
    app测试点(转)
    git的使用
    ssm框架拦截器设置 & 改变数据库表结构 & JavaWeb出现Invalid bound statement (not found)
    mysql 错 Could not open JDBC Connection for transaction; nested exception is java.sql.SQLExceptio
    waitpid 中 的最后一个参数使用 WNOHANG && read和recv函数区别
    Ubuntu上安装make命令并使用makefile文件简化操作
    Ubuntu安装httpd(apache)及相关配置文件的作用
    QMYSQL driver not loaded 的解决办法 和 QDomDocument::setContent()
    操作系统知识点《一》
  • 原文地址:https://www.cnblogs.com/nlyangtong/p/11471195.html
Copyright © 2011-2022 走看看