jQuery 源碼分析筆記(7) Queue
// 一般用法:
$("#foo").slideUp(function() {
alert("Animation complete.");
});
// 相當(dāng)于:
$("#foo").slideUp(); // 不提供回調(diào),只是觸發(fā)事件
$("#foo").queue(function() { // 把回調(diào)函數(shù)加入
alert("Animation complete.");
$(this).dequeue(); // 必須從隊(duì)列中取出,那么隊(duì)列中的下一個(gè)函數(shù)就有機(jī)會(huì)被調(diào)用
});
queue內(nèi)部使用data或者JavaScript數(shù)組API來(lái)保存數(shù)據(jù)。其中操作數(shù)組的push和shift天生就是一組隊(duì)列API。而data可以用來(lái)保存任意數(shù)據(jù)。
queue: function(elem, type, data) {
if(elem) {
// 默認(rèn)是fn
type = (type || "fx") + "queue";
// data內(nèi)部API:data(element, key, value, pvt);
// 這里不傳入data,是為了效率的考慮。如果沒(méi)傳入data,則只是get隊(duì)列,那么就不需要以下的判斷了
var q = jQuery.data(elem, type, undefined, true);
if(data) {
if(!q || jQuery.isArray(data)) {
q = jQuery.data(elem, type, jQuery.makeArray(data), true);
} else {
q.push(data); // 壓入
}
}
return q || [];
}
}
dequeue: function(elem, type) { type = type || "fx"; // 得到這個(gè)隊(duì)列 var queue = jQuery.queue(elem, type), // 出列一個(gè)元素 fn = queue.shift(), defer;
// "inprogress"崗哨
if(fn === "inprogress") {
fn = queue.shift();
}
if(fn) {
// 加一個(gè)崗哨,防止自動(dòng)出列
if(type === "fx") {
queue.unshift("inprogress");
}
// 執(zhí)行
fn.call(elem, function() {
jQuery.dequeue(elem, type);
});
}
if(!queue.length) {
jQuery.removeData(elem, type + "queue", true);
handleQueueMarkDefer(elem, type, "queue");
}
}
相關(guān)文章
基于jquery鼠標(biāo)點(diǎn)擊其它地方隱藏層的實(shí)例代碼
基于jquery鼠標(biāo)點(diǎn)擊其它地方隱藏層的實(shí)例代碼,需要的朋友可以參考下。2011-01-01
jQuery實(shí)現(xiàn)彈窗居中效果類似alert()
本文給大家分享基于jquery實(shí)現(xiàn)彈窗居中效果類似于alert(),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-02-02
easyui簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了easyui簡(jiǎn)介,詳細(xì)的介紹了什么是easyui和easyui的用法,有興趣的可以了解一下2017-07-07
jquery validate添加自定義驗(yàn)證規(guī)則(驗(yàn)證郵箱 郵政編碼)
這篇文章主要介紹了query validate添加自定義驗(yàn)證規(guī)則,可以驗(yàn)證郵箱、郵政編碼等,看代碼參考使用2013-12-12
jQuery實(shí)現(xiàn)的一個(gè)自定義Placeholder屬性插件
這篇文章主要介紹了jQuery實(shí)現(xiàn)的一個(gè)自定義Placeholder屬性插件,本文最后附有插件完整源碼,需要的朋友可以參考下2014-08-08
JSON+Jquery省市區(qū)三級(jí)聯(lián)動(dòng)
這篇文章主要介紹了JSON+Jquery省市區(qū)三級(jí)聯(lián)動(dòng)的相關(guān)資料,需要的朋友可以參考下2016-01-01
EasyUI中combobox默認(rèn)值注意事項(xiàng)
這篇文章主要介紹了EasyUI中combobox默認(rèn)值注意事項(xiàng),是個(gè)人在項(xiàng)目中遇到并解決的事宜,分享給大家,需要的朋友可以參考下2015-03-03
兩種方法基于jQuery實(shí)現(xiàn)IE瀏覽器兼容placeholder效果
這篇文章主要介紹了兩種方法基于jQuery實(shí)現(xiàn)IE瀏覽器兼容placeholder效果,需要的朋友可以參考下2014-10-10

