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