DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> jQuery學習筆記之回調函數
jQuery學習筆記之回調函數
編輯:關於JavaScript     

1.回調函數定義

回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,才會真正的執行回調函數內部的方法。

2.代碼

JS代碼

(function($){
$.fn.shadow = function(opts){
//定義的默認的參數
var defaults = {
copies: 5,
opacity:0.1,
//回調函數
copyOffset:function(index){
return{x:index,y:index};
}
};
//將opts的內容合並到default中。
var options = $.extend(defaults,opts);
return this.each(function(){
var $originalElement = $(this);
//設置參數對象
for(var i=0;i<options.copies;i++)
{
var offset = options.copyOffset(i);
$originalElement
.clone()
.css({
position:'absolute',
left:$originalElement.offset().left + offset.x,
top:$originalElement.offset().top + offset.y,
margin:0,
zIndex:-1,
//設置參數對象
opacity:options.opacity
})
.appendTo('body');
}
});
};
})(jQuery);
$(document).ready(function(){
$('h1').shadow({
copies:5,
copyOffset:function(index){
return {x:-index,y:-2 * index};
}
});
});

3.分析

通過這段代碼調試的時候進入的順序,便可理解回調函數的機制。通過對黃背景的四段代碼加入斷點。程序將會以以下的順序運行

39:先跑第39行,當DOM加載完畢後運行了shadow(),跑完39行並不會直接跑40行。而是直接調到了shadow()函數定義的地方。在這裡只是聲明了copyOffset的函數指針。

2:這時候查看opts裡面的內容Object { copies=5, copyOffset=function()}從這裡可以看出來copyOffset只是一個function(),

8:開始走默認參數的copyOffset,與39行一樣,不會直接進入回調函數裡面的內容。

19:走到這裡時,需要將對CopyOffset發出請求並傳入了i作為參數。這時候i就是回調函數的參數index。

40:由於13行的”var options = $.Extend(defauflts,opts)”。opts的屬性會覆蓋掉default的屬性,所以不會走9行默認的參數中的回調函數的執行方法,而是走了第40行的回調函數的方法。

4.總結

從上面的分析可以看出,回調函數在參數中聲明時,相當於只是聲明了一個委托。等到用到這個參數的時候才會真正的執行回調函數裡面的內容。

5.附html代碼

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Developing Plugins</title>
<link rel="stylesheet" href="08.css" type="text/css" />
<link rel="stylesheet" href="ui-themes/smoothness/jquery-ui-1.10.0.custom.css" type="text/css" />
<script src="jquery.js"></script>
<script src="jquery-ui-1.10.0.custom.min.js"></script>
<script src="08.js"></script>
</head>
<body>
<div id="container">
<h1>Inventory</h1>
<table id="inventory">
<thead>
<tr class="two">
<th>Product</th>
<th>Quantity</th>
<th>Price</th>
</tr>
</thead>
<tfoot>
<tr class="two" id="sum">
<td>Total</td>
<td></td>
<td></td>
</tr>
<tr id="average">
<td>Average</td>
<td></td>
<td></td>
</tr>
</tfoot>
<tbody>
<tr>
<td><a href="spam.html" data-tooltip-text="Nutritious and delicious!">Spam</a></td>
<td>4</td>
<td>2.50</td>
</tr>
<tr>
<td><a href="egg.html" data-tooltip-text="Farm fresh or scrambled!">Egg</a></td>
<td>12</td>
<td>4.32</td>
</tr>
<tr>
<td><a href="gourmet-spam.html" data-tooltip-text="Chef Hermann's recipe.">Gourmet Spam</a></td>
<td>14</td>
<td>7.89</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>

以上所述是小編給大家介紹的jQuery學習筆記之回調函數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家的支持!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved