jqury中$("#div").index($this)在setTimeoutt中返回值一直是-1的问题解决方案

今天遇到一个十分蛋疼的问题,花了我一个多小时才解决,其实十分简单,但我是新手,好了,事情是这样的:

我想让鼠标停留在某个元素一定时间再显示它隐藏的内容(不然你鼠标快速滑上滑下,反反复复,如果碰上slideDown(),会让电脑反应不过来的),刚开始代码如下:

var tid = 0;
        $( ".header_middle ul li" ).hover( function() {
            
            tid = setTimeout( function() {
                    $(".hm_con_1 ").slideDown(250);
                    var $t=$(this);
                    var $t_index=$t.index();
                    $(".hm_con_1 ul ").hide().eq($t_index).show();

            }, 100 );
        }, function() {
            clearTimeout( tid );//当在1秒内退出了hover事件就取消计时代码
        } );
            $(".content1").mouseover(function () {
                $(".hm_con_1").slideUp(250);
            })
        $(".header,.menu,.top").mouseover(function (e) {
            if ($(e.target).closest(".header_middle ul li").length === 0) {
                $(".hm_con_1").slideUp(250);
            }
        })
View Code

但结果是this一直获取不到鼠标hover的元素的值,$t_index返回的都是-1,最后才反现

原生态函数中使用jQuery中的 $(this)无效(好吧,我也不知道什么是原生态函数),

所以,

只能把var $t=$(this);拿到外面去定义了

 

var tid = 0;
        $( ".header_middle ul li" ).hover( function() {
            var $t=$(this);
            tid = setTimeout( function() {
                    $(".hm_con_1 ").slideDown(250);
                    var $t_index=$t.index();
                    $(".hm_con_1 ul ").hide().eq($t_index).show();

            }, 100 );
        }, function() {
            clearTimeout( tid );//当在1秒内退出了hover事件就取消计时代码
        } );
            $(".content1").mouseover(function () {
                $(".hm_con_1").slideUp(250);
            })
        $(".header,.menu,.top").mouseover(function (e) {
            if ($(e.target).closest(".header_middle ul li").length === 0) {
                $(".hm_con_1").slideUp(250);
            }
        })

 


更多专业前端知识,请上 【猿2048】www.mk2048.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值