首頁 >web前端 >js教程 >jQuery.trigger()觸發hover等事件問題的解決辦法分享

jQuery.trigger()觸發hover等事件問題的解決辦法分享

黄舟
黄舟原創
2017-06-26 11:23:262965瀏覽

對於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');
 $(".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');

我覺得這樣,你會更明白

trigger就是不需要你處發生事件,自動執行事件啊。自訂事件,就得用trigger來觸發了。

以上是jQuery.trigger()觸發hover等事件問題的解決辦法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn