分享

jQuery中事件加载 DOM—@ready中调用其他方法,会提示缺少对象的错误

 昵称11933317 2013-04-12

一、CSS-DOM 操作

获取和设置元素的样式属性: css()
获取和设置元素透明度: opacity 属性(css 的一个属性)
获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如 $(“p:first”).height(“2em”);
获取元素在当前视窗中的相对位移: offset(). 其返回对象包含了两个属性: top, left. 该方法只对可见元素有效

二、jQuery 中的事件 --  加载 DOM

在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件. 在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 在 jQuery 中使用$(document).ready() 方法.

三、事件绑定

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3. <head>  
  4. <title>demo05.html</title>  
  5.   
  6. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  7. <meta http-equiv="description" content="this is my page">  
  8. <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  9.   
  10. <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
  11.   
  12. <script type="text/javascript" src="../js/jquery-1.9.1.js"></script>  
  13.   
  14. <script type="text/javascript">  
  15.     $(document).ready(function(){  
  16.         $("#content").hide();  
  17.           
  18.         $("#hd").bind("click",function(){  
  19.             if($("#content").is(":hidden")){  
  20.                 $("#content").show("slow");  
  21.             }else{  
  22.                 $("#content").hide();  
  23.             }   
  24.               
  25.             //$("#content").toggle();  
  26.               
  27.         });  
  28.           
  29.         /* $("#hd").hover(function(){  
  30.             $("#content").show("slow");  
  31.         },function(){  
  32.             $("#content").hide();  
  33.         }); */  
  34.           
  35.           
  36.         /* $("#hd").hide();  
  37.          $("#hd").toggle(function(){  
  38.             $("#content").show("slow");  
  39.         },function(){  
  40.             $("#content").hide();  
  41.         });  */  
  42.           
  43.         /* $("#hi").bind("click",function(){  
  44.             alert("傻瓜");  
  45.               
  46.             return false;  
  47.         }); */  
  48.           
  49.     });  
  50.       
  51. </script>  
  52.   
  53. </head>  
  54.   
  55. <body>  
  56.     <div id="panl">  
  57.         <h5 id="hd" style="height: 30px; width: 160px; background-color: fuchsia;" >什么是jQuery?</h5>  
  58.     </div>  
  59.     <div id="content">  
  60.         Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k)  
  61.         ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera  
  62.         9.0+)。jQuery使用户能更方便地处理HTML  
  63.         documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。  
  64.   
  65.   
  66.     </div>  
  67.       
  68.       
  69.     <div>  
  70.         <a href="#" id="hi" style="height: 30px; width: 160px; background-color: fuchsia;">hello</a>  
  71.     </div>  
  72.       
  73. </body>  
  74. </html>  
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3. <head>  
  4. <title>demo05.html</title>  
  5.   
  6. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  7. <meta http-equiv="description" content="this is my page">  
  8. <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  9.   
  10. <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
  11.   
  12. <script type="text/javascript" src="../js/jquery-1.9.1.js"></script>  
  13.   
  14. <script type="text/javascript">  
  15.     $(document).ready(function(){  
  16.         $("#content").hide();  
  17.           
  18.         $("#hd").bind("click",function(){  
  19.             if($("#content").is(":hidden")){  
  20.                 $("#content").show("slow");  
  21.             }else{  
  22.                 $("#content").hide();  
  23.             }   
  24.               
  25.             //$("#content").toggle();  
  26.               
  27.         });  
  28.           
  29.         /* $("#hd").hover(function(){  
  30.             $("#content").show("slow");  
  31.         },function(){  
  32.             $("#content").hide();  
  33.         }); */  
  34.           
  35.           
  36.         /* $("#hd").hide();  
  37.          $("#hd").toggle(function(){  
  38.             $("#content").show("slow");  
  39.         },function(){  
  40.             $("#content").hide();  
  41.         });  */  
  42.           
  43.         /* $("#hi").bind("click",function(){  
  44.             alert("傻瓜");  
  45.               
  46.             return false;  
  47.         }); */  
  48.           
  49.     });  
  50.       
  51. </script>  
  52.   
  53. </head>  
  54.   
  55. <body>  
  56.     <div id="panl">  
  57.         <h5 id="hd" style="height: 30px; width: 160px; background-color: fuchsia;" >什么是jQuery?</h5>  
  58.     </div>  
  59.     <div id="content">  
  60.         Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k)  
  61.         ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera  
  62.         9.0+)。jQuery使用户能更方便地处理HTML  
  63.         documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。  
  64.   
  65.   
  66.     </div>  
  67.       
  68.       
  69.     <div>  
  70.         <a href="#" id="hi" style="height: 30px; width: 160px; background-color: fuchsia;">hello</a>  
  71.     </div>  
  72.       
  73. </body>  
  74. </html>  


 

四、合成事件

hover(): 模拟光标悬停事件. 当光标移动到元素上时, 会触发指定的第一个函数, 当光标移出这个元素时, 会触发指定的第二个函数.
toggle(): 用于模拟鼠标连续单击事件. 第一次单击元素, 触发指定的第一个函数, 当再一次单击同一个元素时, 则触发指定的第二个函数, 如果有更多个函数, 则依次触发, 直到最后一个.
toggle() 的另一个作用: 切换元素的可见状态.

五、事件冒泡

事件会按照 DOM 层次结构像水泡一样不断向上只止顶端
解决: 在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.

六、事件对象的属性

事件对象: 当触发事件时, 事件对象就被创建了. 在程序中使用事件只需要为函数添加一个参数. 该事件对象只有事件处理函数才能访问到. 事件处理函数执行完毕后, 事件对象就被销毁了.
event.pageX, event.pageY: 获取到光标相对于页面的 x, y 坐标.

七、移除事件

移除某按钮上的所有  click 事件: $(“btn”).unbind(“click”)
移除某按钮上的所有事件: $(“btn”).unbind();
one(): 该方法可以为元素绑定处理函数. 当处理函数触发一次后, 立即被删除. 即在每个对象上, 事件处理函数只会被执行一次.

八、jQuery 中的动画: 隐藏和显示

hide(): 在 HTML 文档中, 为一个元素调用 hide() 方法会将该元素的 display 样式改为 none. 代码功能同 css(“display”, “none”);
show(): 将元素的 display 样式改为先前的显示状态.
以上两个方法在不带任何参数的情况下, 作用是立即隐藏或显示匹配的元素, 不会有任何动画. 可以通过制定速度参数使元素动起来.
以上两个方法会同时减少(增大)内容的高度, 宽度和不透明度.

fadeIn(), fadeOut(): 只改变元素的透明度. fadeOut() 会在指定的一段时间内降低元素的不透明度, 直到元素完全消失. fadeIn() 则相反.
slideDown(), slideUp(): 只会改变元素的高度. 如果一个元素的 display 属性为 none, 当调用 slideDown() 方法时, 这个元素将由上至下延伸显示. slideUp() 方法正好相反, 元素由下至上缩短隐藏. 

toggle(): 切换元素的可见状态: 如果元素时可见的, 则切换为隐藏; 如果元素时隐藏的, 则切换为可见的. 
slideToggle(): 通过高度变化来切换匹配元素的可见性. 
fadeTo(): 把不透明度以渐近的方式调整到指定的值(0 – 1 之间).

 

 

直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下:

方法1.应用jQuery的扩展可以解决这个问题。

$(document).ready(function(){

$.extend({
  show:function(){
   alert("ready");
  }
});
setInterval("show()",3000);
});

方法2.指定定时执行的函数时不要使用引号和括号。


$(function(){
function show(){
   alert("ready");
}
setInterval(show,3000);// 注意函数名没有引号和括弧!

// 使用setInterval("show()",3000);会报“缺少对象”

});

区别:

setTimeout()

   从载入后延迟指定的时间去执行一个表达式或者是函数;

      仅执行一次 ;和window.clearTimeout一起使用.

setInterval()

   在执行时,它从载入页面后每隔指定的时间执行 一个表达式或者是函数;(功能类似于递归函数);和window.clearInterval一起使用.

补充说明:

这两个方法都可以用来实现在一个固定 时间段之后去执行JavaScript。不过两者各有各的应用场景。

方 法

实际上,setTimeout和 setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是 以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。

不过这两个函数还是有区别的, setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代 码,而setTimeout只执行一次那段代码。

虽然表面上看来setTimeout只能应用在on-off方式的动作上,不过可以通 过创建一个函数循环重复调用setTimeout,以实现重复的操作:

showTime();

function showTime()

{

    var today = new Date();

    alert("The time is: " + today.toString ());

    setTimeout("showTime()", 5000);

}

一旦调 用了这个函数,那么就会每隔5秒钟就显示一次时间。如果使用setInterval,则相应的代 码如下所示:

setInterval ("showTime()", 5000);

function showTime()

{

    var today = new Date();

    alert("The time is: " + today.toString ());

}//jquery教程:http://www./wzjs/jquery/

这两种方法可能看起来非常像,而且显 示的结果也会很相似,不过两者的最大区别就是,setTimeout方法不会每隔5秒钟就执行一 次showTime函数,它是在每次调用setTimeout后过5秒钟再去执行showTime函数。这意味着 如果showTime函数的主体部分需要2秒钟执行完,那么整个函数则要每7秒钟才执行一次。 而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行 一次那个函数。

如果要求在 每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想 由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处 理时间,那么最好使用setTimeout。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多