成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

jQuery學(xué)習(xí)筆記

qc1iu / 2895人閱讀

摘要:第二個參數(shù)是表示請求狀態(tài)的字符串,,,第三個參數(shù)是當(dāng)錯誤發(fā)生時,具體的錯誤描述,等請求結(jié)束無論成功或失敗時的一個回調(diào)函數(shù)。一個參數(shù)名,默認(rèn)是,一般用于指明回調(diào)函數(shù)名。的回調(diào)函數(shù)的執(zhí)行順序與它們的添加順序一致。

jQuery學(xué)習(xí)筆記

jQuery大部分功能需要根據(jù)文檔的DOM模型來工作,首先需要正確地解析到整個文檔的DOM模型結(jié)構(gòu)。使用jQuery需要在整個文檔被瀏覽器完全加載后才開始進(jìn)行。

$(document).ready(function () {
    alert("Hello World!");
    $("p").click(function (event) {
        alert("Thanks for visiting!");
    })
});

$是在jQuery中使用的變量名,可以使用jQuery.noConflict()避免沖突,它的返回值就是jQuery對象。

jQuery.noConflict();
$j = jQuery.noConflict();

jQuery對象與DOM對象之間的轉(zhuǎn)換

使用$()得到的是一個jQuery對象。它封裝了很多 DOM 對象的操作,但是它和 DOM 對象之間是不同的。只有當(dāng)obj是一個DOM對象時才能使用obj.innerHTML;相應(yīng)地,如果是jQuery對象應(yīng)該使用 obj.html() 。

從 DOM 對象轉(zhuǎn)到 jQuery 對象: $(obj)

從 jQuery 對象轉(zhuǎn)到 DOM 對象: obj[0]

比較正規(guī)地從 jQuery 對象到 DOM 的轉(zhuǎn)換,是使用 jQuery 對象的 get() 方法:

$(function () {
    $("li").get();
    $("li").get(0);
    $("li").get(-1);
});
jQuery選擇器

1. 常規(guī)選擇器

$("*") 選擇所有節(jié)點(diǎn)

$("#id") ID選擇器,注意其中的一些特殊字符,如.

$(".class") 類選擇器

$("tag") 標(biāo)簽選擇器

$("子元素")

$("直接子元素")

:focus 獲取焦點(diǎn)元素

:first-child/:last-child 選擇第一個/最后一個元素

:first/:last 截取第一個/最后一個符合條件的元素

("pre+next") 直接兄弟元素

("pre~siblings") 兄弟元素

:nth-child() 索引選擇,索引從1開始

:nth-child(odd)

:nth-child(even)

:nth-child(4n)

2. 屬性選擇器

[name~="value"] 屬性中包括某單詞

[name="value"] 屬性完全等于指定值

[name!="value"] 屬性不等于指定值

[name] 包括有指定屬性的元素

3. 控件選擇器

:checked 選擇所有被選中的元素

:selected 被選擇的元素

:disabled/:enabled 選擇被禁用/未禁用的元素

:hidden 隱藏元素,不僅是[type="hidden"],還有displa:none

:visible 可見控件,visibility:hiddenopacity:0同樣被認(rèn)為是可見

:input :button :checkbox :file :image :password :radio :reset :submit :text 具體控件,圖像控件是[type="image"]

4. 其他選擇器

[name="value"] [name2="value2"] 多個AND條件

("selector1, selector2, selectorN") 多個OR條件

:not() 否定選擇

(":contains("text")") 包含有指定內(nèi)容的元素

:eq() :lt() :gt() :even :odd 列表索引選擇(不支持負(fù)數(shù))

(":has(selector)") 符合條件的再次過濾

:header 選擇h1,h2,h3...標(biāo)題元素

:only-child 僅有一個子元素的元素

:empty 空元素,即無內(nèi)容也無元素

:parent 非空元素

節(jié)點(diǎn)漫游

1. 調(diào)用鏈處理

.add() 向已有的節(jié)點(diǎn)序列中添加新的對象

.andSelf() 在調(diào)用鏈中,隨時加入原始序列

.eq() 指定索引選取節(jié)點(diǎn),支持負(fù)數(shù)

.filter() .is() .not() .find() .first() .last() .has() 序列選擇

.end() 節(jié)點(diǎn)回溯

$(function () {
    $("ul.first").find(".foo").css("background-color", "red")
        .end().find(".bar").css("background-color", "green");
});

2. 子節(jié)點(diǎn)

.children() 所有的子節(jié)點(diǎn),可加入過濾條件,.children(selector)

3. 兄弟節(jié)點(diǎn)

.siblings() .next() .nextAll() .nextUntil() .prevAll() .prevUntil() .closet() 選擇兄弟節(jié)點(diǎn)

4. 父節(jié)點(diǎn)

.parent() .parents() .parentUntil() 父節(jié)點(diǎn)選擇

元素控制

1. attributesproperties的區(qū)別

attributes 是XML結(jié)構(gòu)中的屬性節(jié)點(diǎn)

properties 是DOM對象,對象屬性

$("body").get(0).tagName;

2. 類與屬性控制

.addCLass() .hasClass() .removeClass() 添加一個類,判斷是否有指定類,刪除類

$("body").addClass("test");
$("body").addClass(function (index, current) {
    return current + "new";
});
$("body").removeClass("test");
$("body").removeClass(function (index, current) {
    return current + " " + "other";
});

.toggleClass() 類的開關(guān)式轉(zhuǎn)換

$("img").toggleClass(); //對所有類的開關(guān)
$("img").toggleClass("test"); //對指定類的開關(guān)
$("img").toggleClass(isTrue); //根據(jù)`isTrue`判斷所有類的開關(guān)
$("img").toggleClass("test", isTrue); //根據(jù)`isTrue`判斷指定類的開關(guān)

//同 `$("img").toggleClass("test");` 只是類名由函數(shù)返回
$("img").toggleClass(function (index, className, isTrue) {
    return "name"
});

// `isTrue`作為函數(shù)的第三個參數(shù)傳入
$("img").toggleClass(function (index, className, isTrue) {
    return "name"
}, isTrue);

.attr() 獲取或設(shè)置一個屬性值

// $("#greatphoto").attr("alt"); //獲取屬性`
$("#greatphoto").attr("alt", "Shenzhen Brush Seller"); //設(shè)置屬性`

// 同時設(shè)置多個屬性
$("#greatphoto").attr({
    alt: "Shen Brush Seller",
    title: "photo by Kelly Clark"
});

//設(shè)置屬性為函數(shù)返回值,函數(shù)的上下文為當(dāng)前元素
$("#greatphoto").attr("title", function (i, val) {
    return val + " - photo by Kelly Clark";
})

.prop() 用法同.attr(),只是對象變成了properties

.removeAttr() .removeProp() 刪除屬性

.val() 設(shè)置或獲取元素的表單值,通常用于表單元素

$("input").val();
$("input").val("other");

.html() 設(shè)置或獲取元素的節(jié)點(diǎn)html

$("div").html();
$("div").html("
測試
"); $("div").html(function (index, old) { return old + "另外的內(nèi)容"; });

3. 樣式控制

.css() 獲取或設(shè)置指定的CSS樣式

$("body").css("background-color", "red");
$("body").css("background-color", function (index, value) {
    return value + "1";
});
$("body").css({color: "green", "background-color": "red"});

.width() .height() 獲取或設(shè)置元素的寬和高

$("body").width();
$("body").width(50);
$("body").width(function (index, value) {
    return value += 10;
})

.innerWidth() .innerHeight() .outerHeight() .outerWidth() 元素的其他尺寸值

.scrollLefgt() .scrollTop() 獲取或設(shè)置滾動條的位置

.offset() .position() 獲取元素的坐標(biāo)

offset是相對于document,position是相對于父級元素

結(jié)構(gòu)控制

1. 文本節(jié)點(diǎn)

.html() .text() 設(shè)置和獲取節(jié)點(diǎn)的文本值。設(shè)置時.text()會轉(zhuǎn)義標(biāo)簽,獲取時.text()會移除所有標(biāo)簽。

2. 子節(jié)點(diǎn)

.append() .prepend()

$(".inner").append("

Test

");

參數(shù)可以有多種形式:

var $newdiv1 = $("
"), newdiv2 = document.createElement("div"), existingdiv1 = document.getElementById("foo"); $("body").append($newdiv1, [newdiv2, existingdiv1]);

3. 兄弟節(jié)點(diǎn)

.after() .before()

$(".inner").after("

Test

");

4. 父節(jié)點(diǎn)

.wrap() .wrap() .wrapInner()

$(".inner").wrap("
"); $(".inner").wrapAll("
"); $(".inner").wrapInner("
");

5. 復(fù)制/刪除/替換節(jié)點(diǎn)

.clone() 復(fù)制節(jié)點(diǎn),可選參數(shù)表示是否處理已綁定的事件與數(shù)據(jù)

.clone(true) 處理當(dāng)前節(jié)點(diǎn)的事件與數(shù)據(jù)

.clone(true, true) 處理當(dāng)前節(jié)點(diǎn)及所有子節(jié)點(diǎn)的事件與數(shù)據(jù)

.detach() 暫時移除節(jié)點(diǎn),之后可以再次恢復(fù)指定位置

.remove() 永久移除節(jié)點(diǎn)

.empty() 清除一個節(jié)點(diǎn)的所有內(nèi)部內(nèi)容

.unwrap() 移除節(jié)點(diǎn)的父節(jié)點(diǎn)

工具函數(shù)

.map() 遍歷所有成員

$(":checkbox").map(function () {
    return this.id;
}).get().join(",");

$(":checkbox").map(function (index, node) {
    return node.id;
}).get().join(",");

.slice() 序列切片,支持一個或兩個參數(shù),支持負(fù)數(shù)

$("li").slice(2).css("background-color", "red");
$("li").slice(2, 4).css("background-color", "green");
$("li").slice(-2, -1).css("background-color", "blue");
通用工具

$.each() $.map() 遍歷列表,$.map()可以用于對象

$.each([52, 97], function (index, value) {
    console.log((index + " : " + value));
});
$.map([0, 1, 2], function (index, n) {
    return n + 4;
});
$.map([0, 1, 2], function (n) {
    return n > 0 ? n + 1 : null;
});
$.map([0, 1, 2], function (n) {
    return [n, n + 1];
});

var dimensions = {width: 10, height: 15, length: 20};
$.map(dimensions, function (value, key) {
    return value * 2;
});

var dimensions = {width: 10, height: 15, length: 20};
$.map(dimensions, function (value, key) {
    return key;
});

$.extend() 合并對象,第一個參數(shù)表示是否進(jìn)行遞歸深入

var object = $.extend({}, object1, object2);
var object = $.extend(true, {}, object1, object2);

$.merge() 合并列表

$.merge([0, 1, 2], [2, 3, 4]);

.grep() 過濾列表,第三個參數(shù)表示是否為取反

$.grep([0, 1, 2], function (array, index) {
    return n > 0;
});//[1,2]
$.grep([0, 1, 2], function (array, index) {
    return n > 0;
}, true);//[0]

$.inArray() 存在判斷

$.inArray(value, array [, fromIndex])

$.isArray() $.isEmptyObject() $.isFunction() $.iSNumeric() $.isPainObject() $.isWindow $.isXMLDoc() 類型判斷

$.noop() 空函數(shù)

$.now() 當(dāng)前時間戳,值為(new Date).getTime()

$.parseJson() $.parseXML() 把字符串解析為對象

var xml = "RSS Title",
    xmlDoc = $.parseXML(xml),
    $xml = $(xmlDoc),
    $title = $xml.find("title");

$.trim() 去頭去尾 $.trim(str)

$.type() 判斷參數(shù)的類型

$.unique() 遍歷后去重。$.unique(arraty)

上下文綁定

$.proxy() 為函數(shù)綁定上下文

$.proxy(function,context)

$.proxy(context,name)

var o = {
    x: "123",
    f: function () {
        console.log(this.x)
    },
};
var go = function (f) {
    f()
};

o.f();// 123
go(o.f);// undefined
go($.proxy(o.f, o));//123
$.proxy(o, "f")(); //123

當(dāng)一個函數(shù)被傳遞之后,它就失去了原先的上下文。

把數(shù)據(jù)存到節(jié)點(diǎn)中

jQuery提供了一種機(jī)制,可以把節(jié)點(diǎn)作為數(shù)據(jù)存儲的容器。

$.data() 往節(jié)點(diǎn)中獲取/設(shè)置數(shù)據(jù)

$.removeData() 刪除數(shù)據(jù)

在內(nèi)部實現(xiàn)上,jQuery會在指定節(jié)點(diǎn)添加一個內(nèi)部標(biāo)識,以此為key,把數(shù)據(jù)存在內(nèi)部閉包的一個結(jié)構(gòu)中。

事實上,jQuery的事件綁定機(jī)制也使用了這套數(shù)據(jù)接口。

$.data($("#data").get(0), "test", "123");
$("#data").data("test", "456");
事件處理

1. 事件綁定

在 jQuery1.7之后,推薦統(tǒng)一使用on()來進(jìn)行事件綁定。

.on() 綁定事件 on()的基本使用方式是:.on(event,handler)

.off() 移除事件

.one() 綁定單次事件

$("#btn").on("click", function (eventObj) {
    console.log("Hello");
})

對于handler,它默認(rèn)的上下文是觸發(fā)事件的節(jié)點(diǎn):

$("#btn").on("click", function (eventObj) {
    console.log(this);
})

使用$.proxy()可以隨意控制上下文:

$("#btn").on("click",
    $.proxy(function (eventObj) {
        console.log(this.a);
    }, {a: 123})); // 123

event參數(shù)還支持通過:

- 以`.`分割的子名字
- 以空格分割的多個事件
$("#btn").on("click.my", (function (eventObj) {
            console.log("123");
        }
    )
);
var f = function () {
    $("#btn").off("click.my")
};

多個事件:

$("#btn").on("click.my click.other",
    (function (eventObj) {
            console.log("123");
        }
    )
);
var f = function () {
    $("#btn").off("click.my")
}

on()的另一種調(diào)用形式:

$("#btn").on({
    "click": function (eventObj) {
        console.log("click");
    },
    "mousemove": function (eventObj) {
        console.log("move");
    }
});

off()的使用方式與on()完全類似:

var f = function (eventObj) {
    console.log("Hello");
};
$("#btn").on("click", f);
$("#btn").off("click");

2. 事件觸發(fā)

事件的觸發(fā)有兩種方式,一是使用預(yù)定的“事件函數(shù)”(.click(),.focus()),二是使用trigger()triggerHandler()。

$("#btn").on("click", function (eventObj) {
    console.log("hello");
});
$("#btn").click();
$("#btn").trigger("click");

trigger()triggerHandler()不同之處在于前面是觸發(fā)事件,而后者是執(zhí)行綁定函數(shù)。

$("#btn").on("focus", function (event) {
    console.log("Hello");
});
$("#btn").triggerHandler("focus");

trigger()triggerHandler()也用于觸發(fā)自定義事件。

$("#btn").on("my", function (event) {
    console.log("Hello");
});
$("#btn").triggerHandler("my");

trigger()triggerHandler()觸發(fā)事件時,可以帶上參數(shù):

$("#btn").on("my", function (event) {
    console.log(obj);
});
$("#btn").trigger("my", {a: 123});

3. 事件類型

行為事件:

.click() 單擊

.dbclick() 雙擊

.blur() 失去焦點(diǎn)時

.change() 值變化時

.focus() 獲取焦點(diǎn)時

.focusin() jQuery擴(kuò)展的獲取焦點(diǎn)

.focusout() jQuery擴(kuò)展的失去焦點(diǎn)

.resize() 調(diào)整大小

.scroll() 滾動

.select() 被選擇

.submit() 表單被提交

鍵盤事件:

.keydown() 按下鍵

.keyup() 放開鍵

鼠標(biāo)事件:

.mousedown() 點(diǎn)下鼠標(biāo)

.mouseup() 松開鼠標(biāo)

.mouseover() 光標(biāo)移入

.mouseout() 光標(biāo)移出

.mousemove() 光標(biāo)在其上移動

.mouseleave() .mouseenter() 光標(biāo)移出/移入

頁面事件:

.ready() 準(zhǔn)備就緒

.unload() 離開當(dāng)前頁時,針對window對象

.error() 發(fā)生錯誤時

.load() 正在載入

4. 事件對象

event.currentTarget,event,target 事件綁定節(jié)點(diǎn)/事件的觸發(fā)節(jié)點(diǎn)(冒泡行為)

event.delegateTarget 綁定事件的對象,通常就是event.currentTarget

event.relatedTarget 相關(guān)的節(jié)點(diǎn),主要用于一些轉(zhuǎn)換式的事件。比如鼠標(biāo)移入,表示它從哪個節(jié)點(diǎn)來的

event.which 標(biāo)明哪個按鈕觸發(fā)了事件,鼠標(biāo)和鍵盤的鍵標(biāo)識統(tǒng)一在這個屬性中

event.preventDefault() event.isDefaultPrevented() 禁止默認(rèn)行為

event.stopImmediateProgation() event.isImmediateProgationStopped() 不僅禁止冒泡。還終止綁定函數(shù)鏈的繼續(xù)進(jìn)行

event.stopPropagation(),event.isPropagationStopped() 禁止冒泡

event.pageX,event.pageY 事件觸發(fā)時相對于document的鼠標(biāo)位置

event.namespace 事件觸發(fā)時的名字空間,比如trigger("click.namespace")

event.data 額外傳入的數(shù)據(jù)

event.result 上一個綁定函數(shù)的返回值

event.timeStamp 事件觸發(fā)時的時間,其值為(new Date).getTime()

event.type 事件類型

如果一個綁定函數(shù)最后返回了false,則默認(rèn)是event.preventDefault()event.stopPropagation()行為。

AJAX

1. 請求與回調(diào)

jQuery的AJAX,核心的請求處理函數(shù)只有一個,就是$.ajax(),然后就是一個簡單的上層函數(shù)。

$.ajax() 的基本使用形式是:

jQuey.ajax(settings) settings是一個對象,里面包含了所有的配置項。

url 請求的地址。

type 請求的方法類型,GET,POST。默認(rèn)是GET。

data 要發(fā)送的數(shù)據(jù)

dataType 服務(wù)器返回的數(shù)據(jù)類型,支持xml,htmlscript,jsonjsonp,text

success 請求成功時調(diào)用的處理函數(shù) success(data, textStatus, jqXHR)

context 回調(diào)函數(shù)執(zhí)行時的上下文

cache 默認(rèn)為true,是否為請求多帶帶添加一個隨機(jī)參數(shù)以防止瀏覽器緩存

error 請求錯誤時的調(diào)用函數(shù)。

error(jqXHR, textStatus, errorThrown)

第二個參數(shù)是表示請求狀態(tài)的字符串:timeout,error,abortparsererror

第三個參數(shù)是當(dāng)HTTP錯誤發(fā)生時,具體的錯誤描述:Not Found,Internal Server Error

complete 請求結(jié)束(無論成功或失敗)時的一個回調(diào)函數(shù)。

complete(jqXHR, textStatus)

第二個參數(shù)時表示請求狀態(tài)的字符串:successnotmodified,error,timeout,abortparsererror。

jsonp 一個參數(shù)名,默認(rèn)是callback,一般用于指明回調(diào)函數(shù)名。設(shè)置成false可以讓請求沒有callback參數(shù)。

jsonpCallback callback參數(shù)值。默認(rèn)是自動生成的一個隨機(jī)值。

2. 請求的狀態(tài)

對于全局的所有AJAX請求而言,可以在任意節(jié)點(diǎn)上綁定到全局任意AJAX請求的每一個事件:

$("#loading").ajaxStart(function () {
    $(this).show();
});

.ajaxStart() 請求將要發(fā)出時

.ajaxSend() 請求將要發(fā)出時(在.ajaxStart()后)

.ajaxSuccess() 請求成功

.ajaxError() 請求錯誤

.ajaxComplete() 請求完成

.ajaxStop() 請求結(jié)束(在.ajaxComplete()后)

3. 工具函數(shù)

.serialize() 解析表單參數(shù)項,返回字符串

$("form").submit(function () {
    alert($(this).serialize());
    return false;
});

.serializeArray() 解析表單參數(shù)項,返回一個列表對象。

$("form").submit(function () {
    alert($(this).serializeArray());
    return false;
});
泛化回調(diào)

1. Deferred

Deferred對象是在jQuery1.5中引入的回調(diào)管理對象。其作用是把一堆函數(shù)按順序放入一個調(diào)用鏈,然后根據(jù)狀態(tài)來依次調(diào)用這些函數(shù)。AJAX的所有操作都是使用它來進(jìn)行封裝的。

var obj = $.Deferred(function (a) {

});
obj.done(function () {
    console.log("1");
});
obj.done(function () {
    console.log("2");
});
obj.resolve();

總的來說:jQuery的Deferred對象有三個狀態(tài):donefail,process。

- `process` 只能先于其他兩個狀態(tài)先被激發(fā)。
- `done`和`fail`互斥,只能激發(fā)一個。
- `process`可以被重復(fù)激發(fā),而`done`和`fail`只能激發(fā)一次。

然后,jQuery提供了一些函數(shù)用于添加回調(diào),激發(fā)狀態(tài)等。

deferred.done() 添加一個或多個成功回調(diào)

deferred.fail() 添加一個或多個失敗回調(diào)

deferred.always() 添加一個函數(shù),同時應(yīng)用于成功和失敗

deferred.progress() 添加一個函數(shù)用于準(zhǔn)備回調(diào)

deferred.then() 依次接受三個函數(shù),分別用于成功,失敗,準(zhǔn)備狀態(tài)

deferred.reject() 激發(fā)失敗狀態(tài)

deferred.resolve() 激發(fā)成功狀態(tài)

deferred.notify() 激發(fā)準(zhǔn)備狀態(tài)

如果一個Deferred已經(jīng)被激發(fā),則新添加的對應(yīng)的函數(shù)會被立即執(zhí)行。

jQuery還提供了一個jQuery.when()的回調(diào)管理函數(shù),可以用于方便地管理多個事件并發(fā)的情況。

var defer = $.ajax({
    url: "test.html",
    dataType: "json"
});
defer.done(function (data) {
    console.log(data);
});

done()做的事和使用success()定義是一樣的。

當(dāng)我們需要完成,像“請求A和請求B都完成時,執(zhí)行函數(shù)”之類的需求時,使用$.when()就可以了。

var defer_1 = $.ajax({
    url: "json.html",
    dataType: "json"
});
var defer_2 = $.ajax({
    url: "jsonp.html",
    dataType: "jsonp"
});
var new_defer = $.when(defer_1, defer_2);
new_defer.done(function () {
    console.log("hello");
});

$.when()中的Deferred,只要有一個是fail,則整體結(jié)果為fail

Deferred的回調(diào)函數(shù)的執(zhí)行順序與它們的添加順序一致。

這里特別注意一點(diǎn),就是done/fail/alwaysthen的返回值的區(qū)別。從功能上看,它們都可以添加回調(diào)函數(shù),但是,方法的返回值是不同的。前組的返回值是原來的那個defer對象,而then返回的是一個新的defer對象。

then返回新的defer這種形式,可以用于方便地實現(xiàn)異步函數(shù)的鏈?zhǔn)秸{(diào)用。

defer.done(function () {
    return $.ajax({
        url: "/json",
        dataType: "json",
        success: function () {
            console.log("inner");
        }
    })
}).done(function () {
    console.log("hello");
});

等同于是調(diào)用了兩次 defer.done , defer.done ,注冊的兩次回調(diào)函數(shù)依次被執(zhí)行后,看到的輸出是:hello,inner。

這是兩次 defer.done 的結(jié)果,第一個回調(diào)函數(shù)返回了一個新的 defer 沒任何作用。

如果換成 then 方法:defer.then(function () {...});

它跟兩次 defer.done 是不同的。 new_defer 會在 inner 那里的 defer 被觸發(fā)時再被觸發(fā),所以輸出結(jié)果是:inner,hello。

更一般地來說 then 的行為,就是前面的注冊函數(shù)的返回值,會作為后面注冊函數(shù)的參數(shù)值:

var defer = $.ajax({
    url: "/json",
    dataType: "json"
});
defer.then(function (res) {
    console.log(res);
    return 1;
}).then(function (res) {
    console.log(res);
    return 2;
}).then(function (res) {
    console.log(res);
});

上面代碼的輸入結(jié)果是:ajax response,1,2。

2. Callbacks

事實上,Deferred機(jī)制,只是在Callbacks機(jī)制的上層進(jìn)行了一層簡單封裝。Callbacks對象才是真正的jQuery中定義的原始的回調(diào)管理機(jī)制。

var obj = $.Callbacks();
obj.add(function () {
    console.log("1");
});
obj.add(function () {
    console.log("2");
});
obj.fire();

Callbacks對象的初始化支持一組控制參數(shù):

$.Callbacks(flags) 初始化一個回調(diào)管理對象。flags是空格分割的多個字符串,以定義此回調(diào)對象的行為:

once 回調(diào)鏈只能被激發(fā)一次

memory 回調(diào)鏈被激發(fā)后,新添加的函數(shù)被立即執(zhí)行

unique 相同的回調(diào)函數(shù)只能被添加一次

stopOnFalse 當(dāng)有回調(diào)函數(shù)返回false時終止調(diào)用鏈的執(zhí)行

CallbackS的控制方法:

callbacks.add() 添加一個或一串回調(diào)函數(shù)

callbacks.fire() 激發(fā)回調(diào)

callbacks.remove() 從調(diào)用鏈中移除指定的函數(shù)

callbacks.empty() 清空調(diào)用鏈

callbacks.disable() 關(guān)閉調(diào)用鏈的繼續(xù)執(zhí)行,新添加的函數(shù)也不會被執(zhí)行

callbacks.lock() 鎖定調(diào)用鏈,但是如果打開了memoryflag,新添加的函數(shù)仍然會執(zhí)行

callbacks.has() 檢查一個函數(shù)是否處于回調(diào)鏈之中

callbacks.fired() 檢查回調(diào)鏈?zhǔn)欠癖患ぐl(fā)

callbacks.locked() 檢查回調(diào)鏈?zhǔn)欠癖绘i定

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94897.html

相關(guān)文章

  • JavaScript框架學(xué)習(xí)筆記(一)

    摘要:基本的學(xué)習(xí)思路是跟著框架設(shè)計這本書,甚至可以說是這本書的讀書筆記。也參考很多網(wǎng)上解讀的博客和學(xué)習(xí)資料。當(dāng)然,最重要的資料還是框架的源代碼。后來由于開發(fā)者反對,新興的框架都在命名空間上構(gòu)建。 JavaScript框架學(xué)習(xí)筆記(一) 我為什么要學(xué)習(xí)框架 更深入的理解工具,以后用起來更順手而且也能做一定的工具取舍,學(xué)習(xí)理解新工具也就更快, 對提升js水平也很有幫助,框架有很多解決坑的經(jīng)典思...

    Shonim 評論0 收藏0
  • jquery學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記一學(xué)習(xí)慕課網(wǎng)基礎(chǔ)課程筆記。本篇博客只作為學(xué)習(xí)記錄用。后代選擇器選擇給定的祖先元素的所有后代原色,一個元素的后代可能是該元素的一個孩子,孫子,曾孫等。相鄰兄弟選擇器選擇所有緊接在元素后的元素一般兄弟選擇器匹配元素之后的所有兄弟元素。 jquery 學(xué)習(xí)筆記一 學(xué)習(xí)慕課網(wǎng)jquery基礎(chǔ)課程筆記。本篇博客只作為學(xué)習(xí)記錄用。 jquery 對象與 DOM 對象 一定要區(qū)分 jquer...

    Anshiii 評論0 收藏0
  • jQuery學(xué)習(xí)筆記

    摘要:提高業(yè)務(wù)編程能力中提供了很多的方法基本都兼容,我們可以使用這些方法快速開發(fā)項目中有的方法提供的思想可以讓我們把項目實現(xiàn)得更優(yōu)化提高基礎(chǔ)以及一些高級編程思想分析源碼,學(xué)習(xí)里面類庫封裝的思想和一些方法實現(xiàn)的原理有時間把中提供的常用方法都去實現(xiàn)一 jQuery 提高業(yè)務(wù)編程能力 JQ中提供了很多的方法(基本都兼容),我們可以使用這些方法快速開發(fā)項目 JQ中有的方法提供的思想可以讓我們把...

    GHOST_349178 評論0 收藏0
  • jQuery入門學(xué)習(xí)筆記1

    摘要:首先明確是一個庫,它的類型是函數(shù),這一點(diǎn)可以通過查看。判斷傳入的參數(shù)是還是返回具體的方法函數(shù)可將所有的添加一個可將所有的變?yōu)槿致暶?,它是一個函數(shù),返回一個對象,對象內(nèi)有不同的方法,本文例子有個方法增加類名,修改節(jié)點(diǎn)內(nèi)容。 首先明確jQuery是一個JavaScript庫,它的類型是函數(shù),這一點(diǎn)可以通過typeOf查看。需要注意的是,script引入方式是本地文件引入,如果是CDN引入...

    lakeside 評論0 收藏0
  • jQuery入門學(xué)習(xí)筆記1

    摘要:首先明確是一個庫,它的類型是函數(shù),這一點(diǎn)可以通過查看。判斷傳入的參數(shù)是還是返回具體的方法函數(shù)可將所有的添加一個可將所有的變?yōu)槿致暶?,它是一個函數(shù),返回一個對象,對象內(nèi)有不同的方法,本文例子有個方法增加類名,修改節(jié)點(diǎn)內(nèi)容。 首先明確jQuery是一個JavaScript庫,它的類型是函數(shù),這一點(diǎn)可以通過typeOf查看。需要注意的是,script引入方式是本地文件引入,如果是CDN引入...

    davidac 評論0 收藏0
  • JavaScript MVC 學(xué)習(xí)筆記(五)事件操作的拓展

    摘要:事件類型布爾值,表示事件是否通過以冒泡形式觸發(fā)。表示鍵盤事件的屬性布爾值,表示當(dāng)前按下的鍵是否表示一個字符。表示當(dāng)前按鍵的值僅對事件有效。,事件發(fā)生時相對于屏幕的坐標(biāo)。 事件對象 event 對象還包含很多有用的屬性。W3C 范中包含的大部分屬性都列在下面,更多信息參照完整的標(biāo)準(zhǔn)規(guī)范。 事件類型: bubbles :布爾值,表示事件是否通過DOM 以冒泡形式觸發(fā)。 事件發(fā)生時...

    Anshiii 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<