老师帮我看下为什么触发不到监听的事件

来源:5-4 自由编程

vivi_li

2020-06-03 09:53:54

<div class="consumer">
   <div class="container">
       <div class="consumer-group">
           <span class="consumer-group-title">消费者保障</span>
           <div class="consumer-group-detail">
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
           </div>
       </div
       ><div class="consumer-group">
           <span class="consumer-group-title">消费者保障</span>
           <div class="consumer-group-detail">
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
               <a href="###" target="_blank" class="link">保障范围</a>
           </div>
       </div
       ><div class="consumer-group">
           <span class="consumer-group-title">消费者保障</span>
           <div class="consumer-group-detail">
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
           </div>
       </div
       ><div class="consumer-group">
           <span class="consumer-group-title">消费者保障</span>
           <div class="consumer-group-detail">
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
               <a href="###" target="_blank">保障范围</a>
           </div>
       </div>
   </div>
</div>


//consumer
var consumer={};
consumer.$doc=$(document);
consumer.$consumer=$(".consumer");
//是否出现在可视区域
consumer.isVisible = function ($elem) {
   //页面可视区域的高度加页面滚动高度大于元素上边沿距离顶部高度时,元素位于可视区域之外---下边界
   //页面滚动高度小于元素自身高度以及页面滚动高度之和----上边界
   return (floor.$win.height() + floor.$win.scrollTop() > $elem.offset().top);
}
consumer.timeToShow = function ($elem) {
   $elem.each(function (index, ele) {
       if (consumer.isVisible($(ele))) {
           console.log(1)
           consumer.$consumer.trigger("consumer-show");
       }
   })
}
consumer.timeToShow(consumer.$consumer);
consumer.$consumer.on('consumer-show',function (e) {
   console.log(e.type)
   console.log(1)
})
// console.log(consumer.isVisible(consumer.$consumer));

写回答

3回答

好帮手慕久久

2020-06-03

同学你好,trigger是触发自定义事件,on是监听该事件。如下:

http://img.mukewang.com/climg/5ed718fc09c556eb06910348.jpg

trigger只要调用就会触发自定义事件,不需要写在别的事件中,如下:

http://img.mukewang.com/climg/5ed7191009c9fdaa06660261.jpghttp://img.mukewang.com/climg/5ed7191309caf02b05540152.jpg

祝学习愉快!

0

好帮手慕久久

2020-06-03

同学你好,代码中的问题如下:

1. 需要增大页面的高度,让页面出现滚动条,这样才可以模拟,滚动到“consumer”时,触发它的“consumer-show”事件。可以使用一个空的div,增大页面的高度:

http://img.mukewang.com/climg/5ed710f309e9e35505540306.jpg

2.  isVisible方法中使用了不存在的对象“footer”,导致该方法无法正确获取到结果,需要做如下更改:

http://img.mukewang.com/climg/5ed7110d0908855a12770194.jpg

3. 页面滚动过程中,也需要判断该元素是否显示了,所以需要在window的滚动事件中触发timeToShow方法,如下:

http://img.mukewang.com/climg/5ed7114d096428a908250629.jpg

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

0
hivi_li
h trigger监听的事件必须通过另外事件进行触发么?
h020-06-03
共1条回复

vivi_li

提问者

2020-06-03

我用document监听也没有成功

0

0 学习 · 14456 问题

查看课程