jQuery核心--对象访问

列表

函数说明
size()1.8-用于返回当前jQuery对象封装的元素个数。
get()用于获取当前jQuery对象匹配到的DOM元素。
index()用于获取当前jQuery对象中指定DOM元素的索引值。
each()用于以当前jQuery对象匹配到的每个元素作为上下文来遍历执行指定的函数。
属性说明
jQueryObject.length用于返回当前jQuery对象封装的元素个数。
jQueryObject.selector1.9-用于返回获取当前jQuery对象时传给jQuery(selector, context)函数的原始选择器(即selector参数)。
jQueryObject.context用于返回获取当前jQuery对象时传给jQuery(selector, context)函数的context参数。

说明

size()

size()函数用于返回当前jQuery对象封装的元素个数。

size()函数与length属性的作用相同,size()方法功能上等价于.length属性。但是.length 属性是首选的,因为它没有函数调用时的额外开销。

该函数属于jQuery对象(实例)。

语法

  • jQueryObject.size( )

返回值

size()函数的返回值是Number类型,返回该jQuery对象封装的DOM元素的个数。

如果该对象是一个空的jQuery对象,没有封装任何元素,则返回0。

示例&说明

HTML代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

相关的jQuery示例代码:

var j_li = $("ul li");
document.writeln( j_li.size() ); // 3

var j_p = $("p"); // 没有p元素,返回空的jQuery对象
document.writeln( j_p.size() ); // 0

get()

get()函数用于获取当前jQuery对象匹配到的DOM元素。

这里介绍的get()函数属于jQuery对象实例,jQuery中还有一个jQuery.get()函数,它属于全局的jQuery对象(无需自行创建jQuery对象),用于通过GET形式的AJAX请求获取远程数据。

该函数属于jQuery对象(实例)。

语法

  • jQueryObject.get( [ index ] )

jQueryObject[index]等价于jQueryObject.get(index),例如jQueryObject[0]等价于jQueryObject.get(0);

参数说明

参数说明
index可选/Number类型 指定的索引,从0开始算起。

如果没有为get()函数指定参数index,则返回包含所有匹配到的元素的数组;如果指定了索引参数index,则只获取对应索引的那个元素。

如果参数index为负数,则将其视作index + jQueryObject.length。

如果参数index超出有效的取值范围,则返回undefined。

返回值

get()方法的返回值为Element/Array类型,返回包含所有匹配到的DOM元素数组或指定索引的DOM元素。

如果当前jQuery对象为空(没有匹配任何的元素),则返回一个空的数组(不包含任何元素)。

示例&说明

HTML示例代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

jQuery示例代码

var $li = $("ul li");
document.writeln( $li.get() ); // [object HTMLLIElement],[object HTMLLIElement],[object HTMLLIElement]
printElement( $li.get(0) ); // LI#n4
printElement( $li.get(2) ); // LI#n6
printElement( $li.get(3) ); // undefined
printElement( $li.get(-1) ); // LI#n6

document.writeln( $("p").get() ); // (实际上是一个空的数组,输出空字符串)

index()

index()函数用于获取当前jQuery对象中指定DOM元素的索引值。

该函数属于jQuery对象(实例)。

语法

  • jQueryObject.index( [ object ] )

参数说明

参数说明
object可选/String/Element/jQuery类型 表示指定元素的对象。

jQuery 1.4新增支持:可以不指定object参数、object参数可以为字符串(选择器)。

参数object可以是DOM元素、jQuery对象或字符串。如果参数object是字符串,则将其视作jQuery选择器,表示该选择器所匹配的元素。

返回值

index()方法的返回值为Number类型,返回指定元素的索引位置(从0开始算起)。

注意:以下文本描述中的当前元素表示当前jQuery对象的第一个元素。

  • 如果没有指定参数object,则返回当前元素在其所有同辈元素中的索引位置。
  • 如果object为String类型,则将其视作选择器,返回当前元素在选择器所匹配的元素中的索引位置。如果该选择器不匹配任何元素或者当前元素不在匹配到的元素内,则返回-1。
  • 如果object为DOM元素或jQuery对象,则返回该元素(或该jQuery对象中的第一个元素)在当前jQuery对象所匹配的元素中的索引位置。

示例&说明

HTML示例代码:

<div id="n1">
    <div id="n2">
        <span id="n3"></span>
        <ul id="n4">
            <li id="n5">item1</li>
            <li id="n6">item2</li>
            <li id="n7">item3</li>
        </ul>
        <span id="n8"></span>
    </div>  
</div>

jQuery示例代码:

// 省略参数: 返回第一个li元素在所有同辈元素中的索引
document.writeln( $("li").index( ) ); // 0
// 参数为DOM元素: 返回n6在$li中的索引
document.writeln( $("li").index( document.getElementById("n6") ) ); // 1
// 参数为jQuery对象: 返回$("#n7")在$li中的索引
document.writeln( $("li").index( $("#n7") ) ); // 2

// 参数为选择器字符串: 返回$li中的第一个元素(即n5)在选择器"#n4"所匹配的元素中的索引
// 选择器"#n4"匹配的元素只有n4一个,没有n5,因此返回-1
document.writeln( $("li").index( "#n4" ) ); // -1

// 省略参数:n4在同辈元素中的索引,n4之前的同辈元素有一个n3,因此返回索引为1
document.writeln ( $("#n4").index( ) ); // 1

// 参数为选择器字符串:n8在选择器"span"所匹配的元素中的索引
// 选择器"span"匹配n3、n8两个元素,n8是其中的第二个元素,因此返回索引为1
document.writeln ( $("#n8").index( "span" ) ); // 1

each()

each()函数用于以当前jQuery对象匹配到的每个元素作为上下文来遍历执行指定的函数。

所谓的上下文,意即该函数内部的this指针引用了该元素。

该函数属于jQuery对象(实例)。请注意,这与全局jQuery对象的each()函数不同。

语法

  • jQueryObject.each( callback)

参数说明

参数说明
callbackFunction类型 指定的用于循环执行的函数。

each()函数将根据匹配到的每一个元素循环调用函数callback。每次调用函数callback时,each()函数都会将callback函数内部的this引用指向当前正在迭代的元素,并为其传入两个参数。第一个参数是当前迭代元素在匹配到的元素中的索引值(从0开始计数),第二个参数是当前迭代元素(与this的引用相同)。

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

返回值

each()方法的返回值为jQuery类型,返回当前jQuery对象本身。

示例&说明

HTML示例代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>
<form id="demoForm">
    <input name="goods_weight" type="checkbox" value="20">A(20kg)<br>
    <input name="goods_weight" type="checkbox" value="33">B(33kg)<br>
    <input name="goods_weight" type="checkbox" value="36">C(36kg)<br>
    <input name="goods_weight" type="checkbox" value="49">D(49kg)<br>
    <input name="goods_weight" type="checkbox" value="56">E(56kg)<br>
    <input name="goods_weight" type="checkbox" value="78">F(78kg)<br>
    <input id="btnBuy" type="button" value="订购">    
</form>

jQuery示例代码:

// 省略参数: 返回第一个li元素在所有同辈元素中的索引
$("ul li").each(function(index, element){
    // this === element
    $(element).html( "编号" + (index + 1) ); 
});


$("#btnBuy").click(function(){
    var weight = 0;
    $("[name=goods_weight]:checked").each(function(){
        weight += parseInt(this.value);
        if(weight > 100){ // 重量超标,停止循环
            return false;
        }
    });
    if(weight <= 0){
        alert("没有选择任何商品!");
    }else if(weight > 100){
        alert("一次订购的商品重量不能超过100kg!");
    }else{
        // 订购商品
        alert("订购商品成功!");
    }
});

.length

length属性用于返回当前jQuery对象封装的元素个数。

length属性与size()方法的作用相同。

该属性属于jQuery对象(实例)。

语法

  • jQueryObject.length

返回值

length属性的返回值是Number类型,返回该jQuery对象封装的DOM元素的个数。

如果该对象是一个空的jQuery对象,没有封装任何元素,则返回0。

示例&说明

HTML示例代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

jQueryObject.length相关的jQuery示例代码:

var j_li = $("ul li");
document.writeln( j_li.length ); // 3

var j_p = $("p"); // 没有p元素,返回空的jQuery对象
document.writeln( j_p.length ); // 0

.selector

selector属性用于返回获取当前jQuery对象时传给jQuery(selector, context)函数的原始选择器(即selector参数)。

换句话说,你通过什么选择器来获得的当前jQuery对象,当前jQuery对象的selector属性就返回什么。

该属性属于jQuery对象(实例)。

语法

  • jQueryObject.selector

jQuery1.3 新增该属性,于jQuery 1.7被标识为已过时,并于jQuery 1.9被移除(官方文档是这样描述的。不过在实际测试中发现:该属性在1.9之后的版本中仍然可用。建议谨慎使用,最好不用)。

返回值

selector属性的返回值是String类型,返回该jQuery对象的原始选择器。

如果当前jQuery对象不是通过传入选择器字符串来获得的,那么将返回空字符串”“。

示例&说明

HTML代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

jQuery示例代码:

var $li = $("ul li");
document.writeln( $li.selector ); // ul li

var $p = $("#n1 p");
// 虽然$p是一个空的jQuery对象,没有匹配到任何元素,但也包含了传入的选择器信息
document.writeln( $p.selector ); // #n1 p

var $ul = $("#n1").find("ul");
// jQuery根据我们的操作自动计算出相应的选择器
document.writeln( $ul.selector ); // #n1 ul

var div_n2 = document.getElementById("n2");
var $n2 = $(div_n2); //DOM元素的方式获取jQuery对象
document.writeln( $n2.selector ); // (空字符串)。

.context

context属性用于返回获取当前jQuery对象时传给jQuery(selector, context)函数的context参数。

如果当时没有传入context参数,则该参数默认为当前文档(document)。

该属性属于jQuery对象(实例)。

语法

  • jQueryObject.context

jQuery1.3 新增该属性,但在 jQuery 1.10 中被标识为已过时。保持该属性只是为了在jQuery Migrate插件中支持live()方法的需要,该属性可能会在未来的版本中被移除。

返回值

context属性的返回值是Element类型,返回获取该jQuery对象时用于指定查找范围的DOM节点。

如果当时没有指定查找范围,则默认的查找范围为当前文档对象(document)。

context属性的返回值是Element类型,哪怕当时传入jQuery(selector, context)函数的context参数不是Element类型。如果当时传入的context参数是jQuery对象,则返回该jQuery对象的context属性。

示例&说明

HTML代码:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

jQuery示例代码:

var $li = $("ul li");
// 返回当前文档的document对象
document.writeln( $li.context ); // [object HTMLDocument]
document.writeln( $li.context === document ); // true

var n1 = document.getElementById("n1");
var $n3 = $( "#n3", n1 );
// 返回n1
document.writeln( $n3.context ); // [object HTMLDivElement]
document.writeln( $n3.context === n1 ); // true

var $n2 = $("#n2");
var $n4 = $( "#n4", $n2 );
// 返回$n2的context属性:document对象
document.writeln( $n4.context ); // [object HTMLDocument]
document.writeln( $n4.context === document ); // true

var $n3 = $("#n3", n1);
var $n5 = $( "#n5", $n3 );
// 返回$n3的context属性:n1
document.writeln( $n5.context ); // [object HTMLDivElement]
document.writeln( $n5.context === n1 ); // true
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值