首页 > jQuery.trigger()触发hover等事件的问题

jQuery.trigger()触发hover等事件的问题

对于Trigger的用法也百度了解过,目的为了在匹配的元素上触发制定的事件,但是对于这个解释还是模棱两可,下面请帮忙看下代码

这是一个基本的焦点轮播图的js代码

     $(".scroll").mouseenter(function() {
             if(adTimer){
             clearInterval(adTimer);
             }
     }).mouseleave(function(event) {
             adTimer =setInterval(function(){
                 showImg(index);
                 index++;
             if (index==len) {index=0;};
             },3000);
     }).trigger('mouseleave');

悬停图片时候clearinterval,离开图片时触发setinterval

但是关于最后一句.trigger('mouseleave')实在不明白含义,只知道为了实现开启网页就自动触发计时器,让轮播图开启切换,而不是等待Mouseleave后再触发事件。

主要的疑问就是在Trigger身上,以及在这里是如何实现的?谢谢各位大神了


应该是类似初始化的意思,他写成链式的了。整个代码的逻辑是:1.绑定鼠标进入时间;2.绑定鼠标离开事件;3.触发一次鼠标离开事件,即初始化执行setInterval
这种写法我个人是不大推荐的。我会这样写:

// 对象变量
var $scroll = $('.scroll'),
    adTimer = null;

// 事件绑定
$scroll.on({
    'mouseenter.scroll': function (e) {
        e.preventDefault();

        // 清除计时
        if (adTimer) {
            clearTimeout(adTimer);
        }
    },
    'mouseleave.scroll': function (e) {
        e.preventDefault();

        // 开始计时
        adTimer = setTimeout(function () {
            // 执行其他逻辑
            // ····
        }, 3000);
    }
});

// 初始化
$scroll.trigger('mouseleave.scroll');

trigger就是不需要你处发生事件,自动执行事件啊。自定义事件,就得用trigger来触发了。


 $(".scroll").mouseenter(function() {
             if(adTimer){
             clearInterval(adTimer);
             }
     }).mouseleave(function(event) {
             adTimer =setInterval(function(){
                 showImg(index);
                 index++;
             if (index==len) {index=0;};
             },3000);
     });
     $(".scroll").trigger('mouseleave');
 

我觉得这样,你会更明白

【热门文章】
【热门文章】