这个按需加载不是很理解

这个按需加载不是很理解

JS里面:

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

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

})


HTML里面:

$focuseSlider.on('slider-show slider-shown slider-hide slider-hidden',function(e,i,elem){

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

})

 有几个问题,
1.这两部分是怎么关联起来的?怎么传参过去
2.这里this.$items.on('show shown hide hidden)这里调用的是之前课程里面的showHide.js里面自定义的show等事件吗?
3.self.$elem.trigger('slider-'+e.type,[self.$items.index(this),this])这里是上面触发了show等事件,然后这里自行触发'slider-'+e.type事件吗?e.type返回的是什么意思,具体什么值?

4.那么[self.$items.index(this),this]这里传的两个参数是具体是什么,是返回给HTML里面这段function(e,i,elem)这里i和elem这两个参数吗?e是函数自带的augement
5.为什么是用[]来包括这2个参数,而不是用逗号隔开?

正在回答

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

1回答

同学你好,因为文件内容较多,看起来会有些复杂,但是是不难理解的哦,可以参考下面的解释:

1、trigger() 方法触发被选元素的指定事件类型。

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

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

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

2、在slider.js中初始化的时候给每个轮播元素绑定了自定义事件:

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

以点击右侧箭头为例:

点击右侧箭头执行to方法,也就是_fade方法:

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

在里面会调用showHide.js中封装的方法showHide,相应的就会触发trigger中的事件:

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

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

触发之后就会执行一开始给每个轮播元素绑定的自定义事件:

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

在自定义事件中又触发了一个trigger自定义的事件,事件名称进行了拼接。

e.type是事件类型,也就是定义的show,shown等。所以拼接之后的结果就是slider-show,slider-shown等,后面是传入的参数,参数固定写在[]。

self.$items.index(this)是当前元素的索引;this是当前元素。

在slider.html中:

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

所以上面触发了拼接后的事件,也就是html中自定义的事件。

[self.$items.index(this),this]这里传的两个参数是返回给HTML里面这段function(e,i,elem)这里i和elem这两个参数,同学理解的没有问题。e是函数自带的参数,也是第一个参数。

自己可以再测试理解下,祝学习愉快!

  • 慕仰2255090 提问者 #1
    ‘在里面会调用showHide.js中封装的方法showHide,相应的就会触发trigger中的事件’ 这话的意思是因为showHide这个方法里面,又包含了一个tirgger('show')所以又会执行this.$items.on('show shown hide hidden',function(e){})这里这个自定义方法,然后自定义方法里又触发了一个trigger自定义的事件,返回给HTML里面的那个$focuseSlider.on('slider-show slider-shown slider-hide slider-hidden',function(e,i,elem){} 大概的关系逻辑就是move.js里面调用了showHide.js中封装的方法showHide,然后又因为tirgger所以触发了move.js里面写好的自定义事件show等,再返回给HTML里面接收,是这个意思吗?
    2019-08-07 17:30:01
  • 好帮手慕星星 回复 提问者 慕仰2255090 #2
    同学这样理解没有问题哦,都是通过trigger触发的自定义事件,从而执行相应的代码。棒棒哒~
    2019-08-07 19:06:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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