紫苏水釉吧 关注:4贴子:143
  • 6回复贴,共1

$(function(){})和$(document).ready(function(){})

只看楼主收藏回复

document.ready和onload的区别——
JavaScript文档加载完成事件页面加载完成有两种事件
一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)
二是onload,指示页面包含图片等文件在内的所有元素都加载完成。
用jQ的人很多人都是这么开始写脚本的:
$(function(){// do something});其实这个就是jq ready()的简写,他等价于:
$(document).ready(function(){//do something})
//或者下面这个方法,jQuer的默认参数是:“document”;
$().ready(function(){//do something})


IP属地:江苏1楼2014-01-15 11:34回复
    IP属地:江苏2楼2014-01-15 11:34
    回复
      (funtion(){})();立即执行函数;相当于先申明一个函数,声明完后直接调用;如果参数如:
      (funtion(str){alert(str)})("output"));相当于:funtion OutPutFun(str){alert(str);};OutPutFun("output");


      IP属地:江苏3楼2014-01-15 11:37
      回复
        IP属地:江苏4楼2014-01-15 11:37
        回复
          for (var i=0; i<5; i++) {
          $('<p>click me</p>').appendTo('body').click(function() {
          alert(i);
          });
          }
          alert(i);
          这是因为你的for循环没有放在一个方法内,所以浏览器定义的i这个变量的时候就当做了全局变量。因为不在方法内部的js语句浏览器默认就是立即执行。你可以把你的语句放在一个方法里面试试,然后你在方法外面alert这个i应该就不会出现了。
          不过,我感觉你点击每个p元素的时候alert弹出的都是5.


          IP属地:江苏5楼2014-03-31 16:16
          回复
            for(var i = 0; i < 10; i++) {
            setTimeout(function() {
            console.log(i);
            }, 0);
            }
            结果十次10


            IP属地:江苏6楼2014-03-31 16:16
            回复
              for (var i = 0; i < 10; i++) {
              (function(a) {
              // 变量 i 的值在传递到这个作用域时被复制给了 a,
              // 因此这个值就不会随外部变量而变化了
              setTimeout(function() {
              console.log(a);
              }, 1000);
              })(i); // 我们在这里传入参数来"闭包"变量
              }
              1。。。10


              IP属地:江苏7楼2014-03-31 16:31
              回复