jquery对象、js全局变量等tips

1、一个DOM对象和Jquery对象,即使是作为一个数组,其元素相同,但其属性是不一样的。DOM Object!=$(''); 

转换的办法

Jquery=>DOM :取jQuery对象数组的第一个

var $jQueryObj=$('#id1');
var domObj=$jQueryObj[0]; //或$jQueryObj.get(0)

DOM=>jQuery 这个比较简单,直接加上$符号就可以了

var domObj=document.getElementById('#id1');
var $jQueryObj=$(dom);

2、window.onload和$(document).ready() 的区别

  1)window.onload会在页面加载完所有元素才执行,而$(document).ready()会在Dom就绪就加载。如果直接调用一个函数,那么会最早加载。

   window.onload = function () {
        alert('window.onload');            //最晚,加载完全部元素,包括图片后才执行
    };
    $(function () {
        alert('document.ready');             //其次,加载完DOM元素,比如表格的框架后,开始执行
    });

    function myFunction() {
        alert("myFunction!");                //最早,加载完母板后就执行
    }

    myFunction();

   2)window.onload若多次注册事件,后面的会覆盖前面的,而$(document).ready(不会覆盖,而是依次注册。

3、javascript的全局变量

全局变量在子函数中有效,如果在子函数中使用var 来改变了值,该变量的值在函数外不改变,否则,如不用var,则其变量的作用域会解析到外面。

原因在于“作用域链”这个概念。所谓作用域链,就是指函数作用范围的链条。在子函数中使用var声明变量时,链条就停止了。同样,使用function(variable){}时,作用域链也停止。 

例如:

var s1=1;
var s2=1;
var s3=1;
function myFunction(){
var s1=2;
s2=2;
}
function myFunction2(s3){
s3=2;
}
alert(s1);   //此时结果为1,s1的作用域链碰见var 即停止
alert(s2);   //此时结果为2
alert(s3);   //此时结果为2,s3的作用域链碰见将自己作为参数的函数也停止

4、在用jQuery的.each函数遍历一个jQuey对象时,有一点需要注意,在回调函数中,this是一个DOM对象,而不是jQuery对象

  $('input').each(function(){

  alert(this.value);  //注意:this是一个DOM对象,而不是jQuery对象

});

因此,this没有val()方法,而是有value属性。

posted @ 2012-10-15 20:34  瓜王  阅读(8301)  评论(0编辑  收藏  举报