對於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中文網其他相關文章!