PHP-Z

前端

js原生态函数中使用jQuery中的 $(this)无效的解决方法

2016-9-4 09:27 发布者: 大熊猫
jQuery是一个兼容多浏览器的JavaScript框架,核心理念是write Less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。


今天遇到一个听郁闷的问题,正如title所说 js中原生态函数在jQuery 中使用 $(this) 被解析成undefined
我今天的例子是这样的, 
 
$("ul li").hover(function(){ 
  setTimeout(function(){ 
    $(this).addClass("test"); 
    alert("延迟了0.3s 我出现了!") //测试 
  },300) 
}) 

在运行时,这个黄色部分是不执行的 ,然后我弹出了一下$(this)原来是undefined (其实已经猜到了); 
然后我就没想(习惯),直接到百度找了,然后没找到答案,然后我就自己想,是不是换种方法,但是我觉得又不大合理,随后我就想到了 在里面读不到,外面可以读得到, 然后我就将$(this) 在setTimeout()外面赋给了一个变量。这样就迎刃而解了。哈哈,挺无语的问题吧,其实我在这里不是想说如何解决的,我是说这种思路,解决问题前先不要一味的去百度 谷歌 
先要自己想想办法,真想不到,去找答案。 
 
$("ul li").hover(function(){ 
  var oLi = $(this); 
  setTimeout(function(){ 
    oLi.addClass("test"); 
    alert("延迟了0.3s 我出现了!") //测试 
  },300) 
}) 

关注微信公众号

top100summit

扫一扫关注微信公众号

PHP-Z_COM