[jQuery教程]jQuery核心方法和技巧(二十)

目录
文章目录隐藏
  1. jQuery 中 each 方法的应用
  2. jQuery 中查找数组中的索引 inArray
  3. jQuery 中去空格神器 trim 方法
  4. jQuery 中 DOM 元素的获取 get 方法
  5. jQuery 中 DOM 元素的获取 index 方法

[jQuery 教程]jQuery 核心方法和技巧(二十)

本章主要介绍 jQuery 核心方法和技巧,让大家更好的理解和运用 jQuery。

jQuery 中 each 方法的应用

jQuery 中有个很重要的核心方法 each,大部分 jQuery 方法在内部都会调用 each,其主要的原因的就是 jQuery 的实例是一个元素合集。

如下:找到所有的 div,并且都设置样式,css 只是一个方法,所以内部会调用 each 处理这个 div 的合集,给每个 div 都设置 style 属性。

$('div').css(...)

jQuery 的大部分方法都是针元素合集的操作,所以 jQuery 会提供$(selector).each()来遍历 jQuery 对象。

.each 只是处理 jQuery 对象的方法,jQuery 还提供了一个通用的 jQuery.each 方法,用来处理对象和数组的遍历。

语法:

jQuery.each(array, callback )
jQuery.each( object, callback )

第一个参数传递的就是一个对象或者数组,第二个是回调函数。

$.each(["Aaron", "码云笔记"], function(index, value) {
   //index 是索引,也就是数组的索引
   //value 就是数组中的值了
});

each 就是 for 循环方法的一个包装,内部就是通过 for 遍历数组与对象,通过回调函数返回内部迭代的一些参数,第一个参数是当前迭代成员在对象或数组中的索引值(从 0 开始计数),第二个参数是当前迭代成员(与 this 的引用相同。

jQuery.each()函数还会根据每次调用函数 callback 的返回值来决定后续动作。如果返回值为 false,则停止循环(相当于普通循环中的 break);如果返回其他任何值,均表示继续执行下一个循环。

$.each(["Aaron", "码云笔记"], function(index, value) {
    return false; //停止迭代
});

jQuery 方法可以很方便的遍历一个数据,不需要考虑这个数据是对象还是数组。

jQuery 中查找数组中的索引 inArray

在 PHP 有 in_array()判断某个元素是否存在数组中,JavaScript 却没有,但是 jQuery 封装了 inArray()函数判断元素是否存在数组中。注意了:在 ECMAScript5 已经有数据的 indexOf 方法支持了,但是 jQuery 保持了版本向下兼容,所以封装了一个 inArray 方法

jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回 -1。

语法:

jQuery.inArray(value, array ,[ fromIndex ])

用法非常简单,传递一个检测的目标值,然后传递原始的数组,可以通过 fromIndex 规定查找的起始值,默认数组是 0 开始

例如:在数组中查找值是 5 的索引

$.inArray(5,[1,2,3,4,5,6,7]) //返回对应的索引:4

注意:
如果要判断数组中是否存在指定值,你需要通过该函数的返回值不等于(或大于)-1 来进行判断

jQuery 中去空格神器 trim 方法

页面中,通过 input 可以获取用户的输入值,例如常见的登录信息的提交处理。用户的输入不一定是标准的,输入一段密码:’ 1123456 “,注意了: 密码的前后会留空,这可能是用户的无心的行为,但是密码确实又没错,针对这样的行为,开发者应该要判断输入值的前后是否有空白符、换行符、制表符这样明显的无意义的输入值。

jQuery.trim()函数用于去除字符串两端的空白字符

这个函数很简单,没有多余的参数用法

需要注意:

  • 移除字符串开始和结尾处的所有换行符,空格(包括连续的空格)和制表符(tab)
  • 如果这些空白字符在字符串中间时,它们将被保留,不会被移除

jQuery 中 DOM 元素的获取 get 方法

jQuery 是一个合集对象,如果需要单独操作合集中的的某一个元素,可以通过.get()方法获取到。

以下有 3 个 a 元素结构:

<a>1</a>
<a>2</a>
<a>3</a>

通过 jQuery 获取所有的 a 元素合集$(“a”),如果想进一步在合集中找到第二 2 个 dom 元素单独处理,可以通过 get 方法

语法:

.get( [index ] )

注意 2 点:

  1. get 方法是获取的 dom 对象,也就是通过 document.getElementById 获取的对象。
  2. get 方法是从 0 开始索引。

所以第二个 a 元素的查找: $(a).get(1)

负索引值参数

get 方法还可以从后往前索引,传递一个负索引值,注意的负值的索引起始值是-1

同样是找到第二元素,可以传递 $(a).get(-2)

jQuery 中 DOM 元素的获取 index 方法

get 方法是通过已知的索引在合集中找到对应的元素。如果反过来,已知元素如何在合集中找到对应的索引呢?

.index()方法,从匹配的元素中搜索给定元素的索引值,从 0 开始计数。

语法:参数接受一个 jQuery 或者 dom 对象作为查找的条件

.index()
.index( selector )
.index( element )
  • 如果不传递任何参数给 .index() 方法,则返回值就是 jQuery 对象中第一个元素相对于它同辈元素的位置。
  • 如果在一组元素上调用 .index() ,并且参数是一个 DOM 元素或 jQuery 对象, .index() 返回值就是传入的元素相对于原先集合的位置。
  • 如果参数是一个选择器, .index() 返回值就是原先元素相对于选择器匹配元素的位置。如果找不到匹配的元素,则 .index() 返回 -1。

简单来说:

<ul>
    <a></a>
    <li id="test1">1</li>
    <li id="test2">2</li>
    <li id="test3">3</li>
</ul>

$(“li”).index() 没有传递参数,反正的结果是 1,它的意思是返回同辈的排列循序,第一个 li 之前有 a 元素,同辈元素是 a 开始为 0,所以 li 的开始索引是 1。

如果要快速找到第二个 li 在列表中的索引,可以通过如下 2 种方式处理。

$("li").index(document.getElementById("test2")) //结果:1
$("li").index($("#test2"))  //结果:1

实际的使用可以参考下边的代码:

HTML 代码:

<h2>index 方法</h2>
<ul>
    <a></a>
    <a></a>
    <li id="test1">1</li>
    <li id="test2">2</li>
    <li id="test3">3</li>
</ul>
<ul>
    <li id="test4">4</li>
    <li id="test5">5</li>
    <li id="test6">6</li>
</ul>
<select id="animation">
    <option value="1">index 无参数</option>
    <option value="2">index 传递 dom</option>
    <option value="3">index 传递 jQuery 对象</option>
</select>
<input id="exec" type="button" value="点击执行">
<br />
<br /> 索引结果:
<span></span>

jQuery 代码:

$("#exec").click(function() {
    var v = $("#animation").val();

    var $span = $("span");
    $span.empty();

    if (v == "1") {
        //找到第一个 li 的同辈节点中的索引位置
        $span.text($("li").index())
    } else if (v == "2") {

        //通过传递 dom 查找
        $span.text($("li").index(document.getElementById("test5")))

    } else if (v == "3") {
        //通过传递 jQuery 对象查找
        $span.text($("li").index($("#test6")))

    }
});

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » [jQuery教程]jQuery核心方法和技巧(二十)

1 评论

  1. 关注博主很久了,教程不错,希望坚持下去。

回复 stinkaroo 取消回复