setTimeout内不支持jquery的选择器的解决方案

今天在写一个js延时事件的时候发现在setTimeout这个方法里面使用jquery的$(this)竟然不起作用,各种测试,最后得出结论是setTimeout内不支持jquery的选择器。于是请教了一下QQ上做jquery开发的高手,马上就把这问题解决了,在这里记录一下。
下面是作者做延时处理时的js代码:

$('.dl_select dt').hover(
  function(){
    clearTimeout(t3);
    $(this).siblings('dd').css({'display':'block','cursor':'pointer'});
  },
  function(){
    t2=setTimeout(function(){$(this).siblings('dd').css({'display':'none'});},300);
  }
);
$('.dl_select dd').hover(
  function(){
    clearTimeout(t2);
    $(this).css({'display':'block','cursor':'pointer'});
  },
  function(){
    t3=setTimeout(function(){$(this).css({'display':'none'});},200);
  }
);

注意以上代码中得setTimeout里的代码,如果这些代码不在这个方法里面,本身是没有问题的,但是如上这种情况是会报错的。至于原因,作者现在也没有弄明白。经网友点化改成如下就没事儿了,方法很巧妙。如下是正确的代码:

$('.dl_select dt').hover(
  function(){
    clearTimeout(t3);
    $(this).siblings('dd').css({'display':'block','cursor':'pointer'});
  },
  function(){
    var $this=$(this).siblings('dd');
    t2=setTimeout(function(){$this.css({'display':'none'});},300);
  }
);
$('.dl_select dd').hover(
  function(){
    clearTimeout(t2);
    $(this).css({'display':'block','cursor':'pointer'});
  },
  function(){
    var $this=$(this);
    t3=setTimeout(function(){$this.css({'display':'none'});},200);
  }
); 

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • JQuery中层次选择器用法实例详解

    本文实例讲述了JQuery中层次选择器用法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head

  • jquery表单对象属性过滤选择器实例分析

    本文实例讲述了jquery表单对象属性过滤选择器用法.分享给大家供大家参考.具体分析如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

  • jQuery创建自定义的选择器用以选择高度大于100的超链接实例

    本文实例讲述了jQuery创建自定义的选择器用以选择高度大于100的超链接实现方法.分享给大家供大家参考.具体分析如下: jQuery创建一个自定义的选择器,自己定义的这个选择器实际上可以是一个函数,下面的JS代码定义了一个over100pixels的选择器,选择出高度大于100的链接,这类技巧非常实用 $.extend($.expr[':'], { over100pixels: function(a) { return $(a).height() > 100; } }); $('.box:ov

  • jquery通过closest选择器修改上级元素的方法

    本文实例讲述了jquery通过closest选择器修改上级元素的方法.分享给大家供大家参考.具体如下: 这段代码演示了jQuery通过closest选择器获取上一级的元素,然后修改其text()内容. <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>

  • Jquery中基本选择器用法实例详解

    本文实例讲述了Jquery中基本选择器用法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head

  • JQuery中上下文选择器实现方法

    本文实例讲述了JQuery中上下文选择器实现方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

  • jquery实现不包含当前项的选择器实例

    本文实例讲述了jquery实现不包含当前项的选择器实例.分享给大家供大家参考.具体如下: 这段代码演示了jquery选择所有的链接,点击其中一个链接时,其它的链接都变色,只有当前链接不变色 var $allLinks = $("a"); $allLinks.click(function() { $allLinks.not(this).css("color", "red"); }); 更多关于jquery选择器相关内容感兴趣的读者可查看本站专题:&

  • JQuery选择器、过滤器大整理

    经过一晚上的查找整理,终于整理出一套应该算最全面的JQuery选择过滤器的方法了.所有代码均经过测试. 首先HTML代码 复制代码 代码如下: HTML Code <html> <head> <script type="text/javascript" src="JQuery/jquery-1.5.1.js"></script> </head> <body> <form name=&quo

  • setTimeout内不支持jquery的选择器的解决方案

    今天在写一个js延时事件的时候发现在setTimeout这个方法里面使用jquery的$(this)竟然不起作用,各种测试,最后得出结论是setTimeout内不支持jquery的选择器.于是请教了一下QQ上做jquery开发的高手,马上就把这问题解决了,在这里记录一下. 下面是作者做延时处理时的js代码: $('.dl_select dt').hover( function(){ clearTimeout(t3); $(this).siblings('dd').css({'display':'

  • jQuery常用选择器详解

    本文为大家分享了jQuery常用选择器的具体代码,供大家参考,具体内容如下 1.jQuery:(使用jQuery一定标明我们使用的版本号) 它是一个使用原生的JS来封装的常用的方法的类库(解决了浏览器的兼容问题) 2.jQuery中提供的方法 选择器 通过传递对应规则的内容(ID.标签名.样式类名...),获取到页面中指定的元素/元素集合 <!DOCTYPE html> <html lang="en"> <head> <meta charset

  • jQuery基本选择器和层次选择器学习使用

    本文实例为大家分享了jQuery选择器的具体实现代码,供大家参考,具体内容如下 1. 基本选择器 <html> <head> <meta charset="utf-8"> <title>jQuery基本选择器</title> <script type="text/javascript" src="js/jquery-1.x.js"> </script> </

  • jquery 属性选择器(匹配具有指定属性的元素)

    jQuery 选择器 在前面的章节中,我们展示了一些有关如何选取 HTML 元素的实例. 关键点是学习 jQuery 选择器是如何准确地选取您希望应用效果的元素. jQuery 元素选择器和属性选择器允许您通过标签名.属性名或内容对 HTML 元素进行选择. 选择器允许您对 HTML 元素组或单个元素进行操作. 在 HTML DOM 术语中: 选择器允许您对 DOM 元素组或单个 DOM 节点进行操作. jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("

  • jQuery层级选择器实例代码

    本文实例为大家分享了jQuery层级选择器的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href=&q

  • jQuery过滤选择器:not()方法使用介绍

    jQuery(':not(selector)') 在jQuery的早期版本中,:not()筛选器只支持简单的选择器,说明我们传入到:not这个filter中的selector可以任意复杂,比如:not(div a) and :not(div,a) 复制代码 代码如下: <p >"a">sdfsdfs</p> <p >"b">sdfsdfs</p> <p >"c">sdf

  • jQuery过滤选择器详解

    过滤选择器 过滤选择器主要是通过特定的过滤规则来筛选出所需的 DOM元素,该选择器都以":"开头 按照不同的过滤规则,过滤选择器可以分为基本过滤,内容过滤,可见性过滤,属性过滤,子元素过滤和表单对象属性过滤选择器. 基本过滤选择器 基本过滤选择器示例 改变第一个 div元素的背景色为 # bbffaa 改变最后一个 div元素的背景色为 # bbffaa 改变class不为 one的所有 div元素的背景色为 # bbffaa 改变索引值为偶数的 div元素的背景色为 # bbffaa

  • 老生常谈jquery id选择器和class选择器的区别

    实例如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link href="style.css" rel="external nofollow" rel="external nofollow" rel=&

  • jquery css 选择器演示代码

    效果如图所示:核心代码: 复制代码 代码如下: <script type="text/javascript"> $('#one').css("background","#fff"); $('div').css("background","#fff"); $('body div').css("background","#bbffaa");//改变body内所

  • jQuery基本选择器(实例及表单域value的获取方法)

    jQuery基本选择器包括 CSS选择器.层级选择器和.表单域选择器. 1.CSS选择器 (1)标签选择器 $("div")  $("p")  $("table") 等一系列 HTML 标签 (2)ID选择器 <input id="user" type="text"> 获取该标记的值:$("#user").val(); (3)类选择器 <input type="

随机推荐