jQuery链式调用

链式代码

 

 
  1.  

    $('input[type="button"]')
    
    .eq(0).click(function() {
    
    alert('点击我!');
    
    }).end().eq(1)
    
    .click(function() {
    
    $('input[type="button"]:eq(0)').trigger('click');
    
    }).end().eq(2)
    
    .toggle(function() {
    
    $('.aa').hide('slow');
    
    }, function() {
    
    $('.aa').show('slow');
    
    });

     


找出type类型为button的input元素

 

找到第一个按钮,并绑定click事件处理函数

返回所有按钮,再找到第二个

为第二个按钮绑定click事件处理函数

为第三个按钮绑定toggle事件处理函数

 

jQuery的这种管道风格的DSL链式代码,总的来说:

节约JS代码;

所返回的都是同一个对象,可以提高代码的效率。

 

通过简单扩展原型方法并通过return this的形式来实现跨浏览器的链式调用。利用JS下的简单工厂方法模式,来将所有对于同一个DOM对象的操作指定同一个实例。

这个原理就超简单了,如下代码:

aQuery().init().name()

分解:

a = aQuery();
a.init()
a.name()

把代码分解一下,很明显实现链式的基本条件就是要实例对象先创建好,调用自己的方法。

 
  1.  

    aQuery.prototype = {
    
    init: function() {
    
    return this;
    
    },
    
    name: function() {
    
    return this
    
    }
    
    }

     


所以我们如果需要链式的处理,只需要在方法内部方法当前的这个实例对象this就可以了,因为返回当前实例的this,从而又可以访问自己的原型了,这样的就节省代码量,提高代码的效率,代码看起来更优雅。但是这种方法有一个问题是:所有对象的方法返回的都是对象本身,也就是说没有返回值,所以这种方法不一定在任何环境下都适合。

http://www.imooc.com/code/3402

--------------------- 本文来自 heyue_99 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/heyue_99/article/details/54918126?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值