trigger() 发送消息机制还不太明白

trigger() 发送消息机制还不太明白

// send message
        this.$items.on('show shown hide hidden', function (e) {
            self.$elem.trigger('slider-' + e.type, [self.$items.index(this)], this);
        });
$focusSlider.on('slider-show slider-shown slider-hide slider-hidden', function (e, i, elem) { // i表示索引值 elem是dom元素
            console.log(i + ':' + e.type);
        });

http://img1.sycdn.imooc.com//climg/5e17d26709de7f6616660425.jpg

http://img1.sycdn.imooc.com//climg/5e17d2970969eb1d16630386.jpg

 

this.$items.on('show shown hide hidden', function (e) {

            self.$elem.trigger('slider-' + e.type, [self.$items.index(this)], this);

        });

这段代码 不理解  为什么这么写了  然后 test.html 这边 接收 

var $focusSlider = $('#focus-slider'); 


        $focusSlider.on('slider-show slider-shown slider-hide slider-hidden', function (e, i, elem) { // i表示索引值 elem是dom元素

            console.log(i + ':' + e.type);

        });

这样就能 打印出

0:slider-hide

1:slider-show

0:slider-hidden

1:slider-shown

这个i 为什么能 0 1 0 1  ?

 

'show shown hide hidden',   trigger('slider-' + e.type,

 这段代码也不太理解 为什么要这么写  然后 就能打印 slider-show 这样了  是语法规定了这样写吗 'slider-' + e.type,  

还有 最后一个this 是什么    self.$elem.trigger('slider-' + e.type, [self.$items.index(this)], this);


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,问题解答如下:

1、on可以绑定自定义事件,然后可以通过trigger去触发,例如:绑定test事件,并输出事件类型

http://img1.sycdn.imooc.com//climg/5e17f79c09fa767205490255.jpg

http://img1.sycdn.imooc.com//climg/5e17f7b20977da7502720026.jpg

2、课程中也是这样一个道理,show,shown等事件是在showHide.js中触发的

http://img1.sycdn.imooc.com//climg/5e17f80a09663fed08570568.jpg

http://img1.sycdn.imooc.com//climg/5e17f84d0946a71706720483.jpg

触发之后拿到e.type类型,与slider进行拼接

http://img1.sycdn.imooc.com//climg/5e180cec09439f0409690178.jpg

再次用trigger方法触发slider-show,slider-shown等事件,也就是html中绑定的事件

http://img1.sycdn.imooc.com//climg/5e180d3809aee52c11390158.jpg

3、trigger语法:$(selector).trigger(event,[param1,param2,...])

event 必需。规定指定元素要触发的事件。

[param1,param2,...]    可选。传递到事件处理程序的额外参数。

课程中也是一样的:

http://img1.sycdn.imooc.com//climg/5e180e3e0989a8c610840220.jpg

对应到html中,event对象为第一个参数,是每个事件中都有的,额外传入的参数依次排列:

http://img1.sycdn.imooc.com//climg/5e180e7409c90e5611310144.jpg

i是当前图片索引,this是当前图片元素。

知道了trigger的语法和用处,就明白课程中的写法了,不难理解哦。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 琥珀_2020 提问者 #1
    好的 谢谢老师! 我自己再多理解理解~
    2020-01-10 14:27:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师