十四、對象字面量
一般來說,數字值不需要加引號而字符串值需要加引號。由于內容名是字符串,所以內容通常是需要加引號的。但是,如果對象字面量中的內容名是有效的JavaScript標識符,比如使用駝峰大小寫形式的DOM表示法時,則可以省略引號。
十五、jQuery還提供了一個強大的 .animate() 方法,用于創建控制更加精細的自定義動畫。 .animate() 方法有兩種形式,第一種形式接收以下4個參數。
// 第一種形式 .animate({property1: 'value1', property2: 'value2'}, duration, easing, function() { alert('The animation is finished.'); } ); // 第二種形式 .animate({ property1: 'value1', property2: 'value2' }, { duration: 'value', easing: 'value', specialEasing: { property1: 'easing1', property2: 'easing2' }, complete: function() { alert('The animation is finished.'); }, queue: true, step: callback });.animate() 方法針對CSS內容提供了方便簡寫值: ‘show’ 、 ‘hide’和 ‘toggle’ ,以便在簡寫方法不適用時提供另一種簡化 .slideToggle() 等內置效果方法的方式。
十六、obj.height()、obj.outWidth() 等方法返回的是不帶單位的數值。
十七、把非效果方法添加到隊列中的一種方式,就是使用 .queue() 方法。在該方法的回調函數里要添加的這個 next () 方法可以讓隊列在中斷的地方再接續起來。
$switcher .css({position: 'relative'}) .fadeTo('fast', 0.5) .slideUp('slow') .queue(.css({backgroundColor: '#f00'}); next(); }) .slideDown('slow');十八、隨著在應用效果時需要考慮的變化的增多,要記住這些效果是同時發生還是按順序發生會變得越來越困難。
當在一個.animate()方法中以多個內容的方式應用時,是同時發生的;
當以方法連綴的形式應用時,是按順序發生的(排隊效果)——除非queue選項值為false。
默認情況下是同時發生的;
當在另一個效果方法或者在 .queue() 方法的回調函數中應用時,是按順序發生的(排隊效果)。
十九、HTML內容與DOM內容
HTML內容是指頁面標記中放在引號中的值,而DOM內容則是指通過JavaScript能夠存取的值。
大多數情況下,HTML內容與對應的DOM內容的作用都是一樣的,jQuery可以幫我們處理名字不一致的問題。可是,有時候我們的確需要留意這兩種內容的差異。某些DOM內容,例如nodeName 、 nodeType 、 selectedIndex 和 childNodes ,在HTML中沒有對應的內容,因此通過 .attr() 方法就沒有辦法操作它們。此外,數據類型方面也存在差異,比如HTML中的 checked內容是一個字符串,而DOM中的 checked 內容則是一個布爾值。對于布爾值內容,最后是測試DOM內容而不是HTML內容,以確保跨瀏覽器的一致行為。
在jQuery中,可以通過 .prop() 方法取得和設置DOM內容;通過 .attr() 方法取得和設置HTML內容。
HTML內容與DOM內容差別最大的地方,恐怕就要數表單控件的值了。比如,文本輸入框的value 內容在DOM中的內容叫 defaultValue ,DOM中就沒有 value 內容。而選項列表( select )元素呢,其選項的值在DOM中通常是通過 selectedIndex 內容,或者通過其選項元素的selected 內容來取得。
由于存在這些差異,在取得和設置表單控件的值時,最好不要使用 .attr() 方法。而對于選項列表呢,最好連 .prop() 方法也不要使用。那使用什么呢,建議使用jQuery提供的 .val()方法:
// 取得文本輸入框的當前值 var inputValue = $('#my-input').val(); // 取得選項列表的當前值 var selectValue = $('#my-select').val(); // 設置單選列表的值 $('#my-single-select').val('value3'); // 設置多選列表的值 $('#my-multi-select').val(['value1', 'value2']);二十、插入操作
.insertBefore() 在現有元素外部、之前添加內容;
.insertAfter() 在現有元素外部、之后添加內容;
.prependTo() 在現有元素內部、之前添加內容;
.appendTo() 在現有元素內部、之后添加內容。
二十一、通常使用“ + ”操作符來拼接字符串,但如果要拼接的字符串太多,那看起來就會很亂。使用 .join() 方法可以避免因要拼接的字符串過多而引起混亂。
// 下面的兩行代碼結果相同 var str = 'a' + 'b' + 'c'; var str = ['a', 'b', 'c'].join('');二十二、使用 .clone() 連同事件一起復制
在默認情況下, .clone() 方法不會復制匹配的元素或其后代元素中綁定的事件。不過,可以為這個方法傳遞一個布爾值參數,將這個參數設置為 true ,就可以連同事件一起復制,即 .clone(true) 。這樣一來,就可以避免每次復制之后還要手工重新綁定事件的麻煩。
二十三、Ajax(異步JavaScript和XML)
從根本上來說,一個Ajax解決方案中涉及如下技術。
JavaScript:處理與用戶及其他瀏覽器相關事件的交互,解釋來自服務器的數據,并將其呈現在頁面上。
XMLHttpRequest :這個對象可以在不中斷其他瀏覽器任務的情況下向服務器發送請求。
文本文件:服務器提供的XML、HTML或JSON格式的文本數據。