jQuery之map()和get()

Query下有个概念叫“类数组”,比如$( " li " ),当取到一个集合的时候,会有数组的一些属性,但是instancseof Array仍然是false。但是var a=$( "li" ).get()这样处理一下,然后instancseof Array就返回true。

要注意var a=$( "li" ).get(1)里头加序列号可以取到单个元素,这些元素的性质不是jQuery对象,而是Js对象,所以不可直接用jQuery方法。

map()的功能主要有两步,第一步就是遍历,第二步就是替换。

$( " li " ).map( function(  ){

     return  $(this).text(  );  // 注意return关键字不可少

} )

map先遍历,每一项都返回一个text()值,然后map会将这些值自动去替换$("li")集合的每一项值,所以这个时候还是个类数组(因为还是$(" li ")的壳子),不是个真正的数组。于是后面加个get()操作就变成真正的数组了,于是可以用join()这样专属于数组的方法。

如:

$( " li " ).map( function(  ){

      return  $(this).text(  );

} ).get(  ).join("%")            // 拼接成字符串,中间用“%”隔开

补充:

map() 和get()也可以直接操纵数组代码如下:


一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox:


然后后台获取参数后再分隔,这种做法有很大弊端,试问如果某一个参数值中出现了分隔符所使用的字符,会出现什么情况呢?当然后台获取的参数将与实际情况不符.

这时我想到了将上述代码写成这样:


如果单纯写成这样,在java后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数,

jQuery.param( obj, traditional )

默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,

但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,然后序列化结果如下:


随即,我们就可以在后台通过request.getParameterValues()来获取参数的值数组了,

所以,比如我们前台有多个checkbox,前台的代码可以写成:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,203评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,394评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 第一章 入门 基本功能:访问和操作 dom 元素,控制页面样式,对页面的事件处理,与ajax完美结合,有丰富的插件...
    X_Arts阅读 1,068评论 0 2
  • 投资离不开买股票,买股票就要学会看懂财务报表,为了学会看财务报表,在网上搜索到了台湾数字力老师林明樟的书《用生活常...
    唠叨的哎咪阅读 268评论 0 1