使用jQuery管理选择结果


Posted in Javascript onJanuary 20, 2015

使用jQuery选择出来的元素与数组非常类似,可以通过jQuery提供的一系列方法对其进行处理,包括长度、查找某个元素,截取某个段落等。

1.获取元素的个数。

在jQuery中可以通过size()方法获取选择器中元素的个数,它类似数组中的length属性,返回整数值,例如:

$("img").size()
获取页面中,所有图片<img>的数目

如下是一个实例,通过不断的点击添加div块并计算页面中的<div>块。

<style>

            div {

                border: 1px solid #003a75;

                background-color: #FFFF00;

                margin: 5px;

                padding: 20px;

                text-align: center;

                height: 20px;

                width: 20px;

                float: left;

            }

        }

        </style>

        <script type="text/javascript">

            document.onclick = function() {

                var i = $("div").size() + 1; //获取div的数目,(此时还没有div块)

                $(document.body).append($("<div>" + i + "</div>")); //添加一个div块

                $("#number").html(i);

            }

        </script>

页面中一共有<span id="number">0</span>个DIV块。单击鼠标添加

2.提取元素

在jQuery中选择器中,如果想提取某个元素,最直接的方法是采用方括号加序号的形式,例如;

$("img[title]")[1]
获取了所有设置了title属性的img标记中的第二个元素。jQuery也提供了get(index)方法来提取元素,以下的代码与上面的完全等效

$("img[title]")get(1)
get方法在不设置任何参数时,可以将元素转化为一个元素对象的数组,如下的例子:

<style>

            div {

                border: 1px solid #003a75;

                background-color: #FFFF00;

                margin: 5px;

                padding: 20px;

                text-align: center;

                height: 20px;

                width: 20px;

                float: left;

            }

        }

        </style>

        <script type="text/javascript">

            function displayleb(ndiv) {

                for (var i = 0; i < ndiv.length; i++)

                    $(document.body).append($("<div style='background:"+ndiv[i].style.background + ";'>" + ndiv[i].innerHTML + "</div>"));

            }

            $(function(){

                var aDiv = $("div").get();//转化为div对象数组

                displayleb(aDiv.reverse());

            });

        </script>

        <div style="background:#FFFFFF">1</div>

        <div style="background:#CCCCCC">2</div>

        <div style="background:#999999">3</div>

        <div style="background:#666666">4</div>

        <div style="background:#333333">5</div>

        <div style="background:#000000">6</div>

上面代码将页面本身的6个<div>块用get()方法转化为数组,然后用数组反序reverse(),并传给displayleb()函数,再将其一个个现在页面中。

get(index)方法可以获取指定位置的元素,反过来,index(element)方法可以查找元素的element所处的位置。例如

var iNum=$("li").index($(li[title=isaac]")[0])
以上取<li titile="isaac">标记在整个<li>标记列表所处的位置,并将该位置返回给整数iNum.如下举例index(element)方法的典型运用。

例:用index()方法获取元素的序号

    <style>

            div {

                border: 1px solid #003a75;

                background-color: #FFFF00;

                margin: 5px;

                padding: 20px;

                text-align: center;

                height: 20px;

                width: 20px;

                float: left;

            }

        }

        </style>

        <script type="text/javascript">

            $(function() {

                //div click()添加单击函数

                $("div").click(function() {

                    //将本身通过this关键字传入,获取自身的序号。

                    var index = $("div").index(this) + 1;

                    $("#display").html(index.toString());

                })

            });

        </script>

        <div style="background:#FFFFFF">1</div>

        <div style="background:#CCCCCC">2</div>

        <div style="background:#999999">3</div>

        <div style="background:#666666">4</div>

        <div style="background:#333333">5</div>

        <div style="background:#000000">6</div>

        单击的是第<span id="display"></span>个div。

以上代码块本身用this关键字传入index()方法中,获取自身的序号,并且利用click()添加事件,将序号显示出来。

3.添加、删除、过滤元素

除了获取选择元素外,jQuery还提供了一系列的方法来修改元素集合,例如用add()的方法添加元素。

$("img[alt]").add("img[title]")
以上代码将设置了alt元素的图像和说呀设置了title属性的图像组合在一起,供别的方法统一调运。它完全等同于

$("img[alt],img[title]")
例如,可以讲组合后的元素集统一添加css属性。

$("img[alt]").add("img[title]").addClass("altcss")
与add()方法相反,not()方法可以去除元素集合中的某些元素形成集合

$("li[title]").not("[title*=isaac]")
以上代码表示,选中所有设置了title属性的标记 ,但不包括title的值中包含"isaac"的<li>。

例:

<style>

            div {

                border: 1px solid #003a75;

                background-color: #FFFF00;

                margin: 5px;

                padding: 20px;

                text-align: center;

                height: 20px;

                width: 20px;

                float: left;

            }

            .altcss {

                border: 2px solid #000000;

            }

        }

        </style>

        <script type="text/javascript">

            $(function() {

                $("div").not(".green, #blueone").addClass("altcss");

            });

        </script>

        <div></div>

        <div id="blueone"></div>

        <div></div>

        <div class="green"></div>

        <div class="green"></div>

        <div class="gray"></div>

        <div></div>

以上的Jquery通过not()的方法去掉风格为"green"和"blueone"的<div>块,给剩下的div块加altcss样式。

not()方法所接收的参数都不能包含特定的元素,只能是通过通用的表达式例如下面的代码是错误的

$("li[title]").not("img[title*=isaac]")
正确的写法是:

$("li[tile]").not("[title*=isaac]")
除了add()和not()外,jQuery还提供了更强大的filter()方法来筛选元素。filter()可以接受两种类型的参数,一种与not()方法一样,接受通用的表达式。代码如下:

$("li").filter("[title*=isaac]")
以上的代码表示:筛选出title值包含isaac字符串的li元素组合。

$("li[title*=isaac]")
所筛选的组合相同。

<script type="text/javascript">

            $(function() {

                $("div").addClass("css1").filter("[class*=middle]").addClass("css2");

            });

        </script>
        <div></div>

        <div class="middle"></div>

        <div class="middle"></div>

        <div class="middle"></div>

        <div class="middle"></div>

        <div></div>

以上代码中其中4个class属性为middle,Jq先给所有的div块都添加了css1样式,然后通过filter()方法,把class中包含middle的div添加css2样式。

在filter()的参数中,不能直接的等于匹配(=),只能使用前匹配(^=)、后匹配(&=),或者任意匹配(*=).

filter()另外一种类型的参数是函数,对于返回ture元素匹配保留,否则排除集合。函数参数功能十分强大,可以让用户自定义筛选函数。

例如:

<script type="text/javascript">

            $(function() {

                $("div").addClass("css1").filter(function(index) {

                    return index == 1 || $(this).attr("id") == "fourth";

                }).addClass("css2");

            });

        </script>      

<div id="first"></div>

    <div id="second"></div>

    <div id="third"></div>

    <div id="fourth"></div>

    <div id="fifth"></div>

以上jq执行:

将所有的div添加css1然后利用filter()返回的函数将div列表中第一个(index为1),id是fourth的div元素筛选出来,添加css2.

4.查询过滤新元素组

jq还提供了 一些很有的用的方法组合,通过查询来获取新元素组合。例如find()方法。通过匹配选择器来筛选元素

$("p").find("span")
表示查找到<p>标记下含有<span>标记的组合

完全等于

$("span",$("p"))

$(function(){

    $("p").find("span").addClass("css1");

});
<p><span>Hello</span>, how are you?</p>

表示给Hello添加css1的样式.

另外,还可以通过is()方法来检测是否包含指定的元素,例如可以通过下面代码检测页面中<div>块中是否包含图片。

var himg = $("div").is("img");
试想下,is()还可以结合filter()使用,是不是很惬意?

以上就是本文的全部内容了,虽然有点长,但是还是建议小伙伴们仔细读一下,希望大家能够喜欢。

Javascript 相关文章推荐
用htc组件制作windows选项卡
Jan 13 Javascript
jquery.validate使用攻略 第二部
Jul 01 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
浮动的div自适应居中显示的js代码
Dec 23 Javascript
Angularjs基础知识及示例汇总
Jan 22 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
Dec 17 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
javascript动态修改Li节点值的方法
Jan 20 #Javascript
js+css实现tab菜单切换效果的方法
Jan 20 #Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 #Javascript
js动态切换图片的方法
Jan 20 #Javascript
JavaScript 基本概念
Jan 20 #Javascript
自己动手手写jQuery插件总结
Jan 20 #Javascript
JavaScript学习心得之概述
Jan 20 #Javascript
You might like
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
php 文本文件的读取效率
2012/02/10 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
Laravel下生成验证码的类
2017/11/15 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
dojo 之基础篇
2007/03/24 Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
基于python检查矩阵计算结果
2020/05/21 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
SQL SERVER面试资料
2013/03/30 面试题
重阳节登山活动方案
2014/02/03 职场文书
2014植树节活动总结
2014/03/11 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android