jQuery.trigger()触发hover等事件问题的解决办法分享
程序员文章站
2022-05-04 11:28:12
...
对于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等事件问题的解决办法分享的详细内容,更多请关注其它相关文章!
推荐阅读
-
input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题
-
jquery:change事件不触发问题的解决办法
-
jquery:change事件不触发问题的解决办法
-
jquery focusout和click事件冲突的问题解决办法分享
-
jQuery.trigger()触发hover等事件问题的解决办法分享
-
jQuery.trigger()触发hover等事件问题的解决办法分享
-
jquery focusout和click事件冲突的问题解决办法分享
-
jquery blur不触发的问题解决办法分享
-
jquery blur不触发的问题解决办法分享
-
jquery:delegate重复触发事件问题的解决办法