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屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM