亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何訂購與jQuery綁定的事件

如何訂購與jQuery綁定的事件

jeck貓 2019-07-10 14:58:48
如何訂購與jQuery綁定的事件假設我有一個Web應用程序,它有一個可能包含4個腳本塊的頁面-我編寫的腳本可能在其中一個塊中找到,但我不知道哪一個是由控制器處理的。我綁了一些onclick事件的按鈕,但我發現,它們有時執行的順序,我沒有預料到。是否有確保秩序的方法,或者你過去是如何處理這個問題的?
查看完整描述

3 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

多年來,我一直試圖推廣這種過程,但在我的例子中,我只關心鏈中第一個事件偵聽器的順序。

如果它有任何用處,下面是我的jQuery插件,它綁定的事件偵聽器總是在任何其他事件之前觸發:

** 使用jQuery更改進行內聯更新(謝謝Toskan) **

(function($) {
    $.fn.bindFirst = function(/*String*/ eventType, /*[Object])*/ eventData, /*Function*/ handler) {
        var indexOfDot = eventType.indexOf(".");
        var eventNameSpace = indexOfDot > 0 ? eventType.substring(indexOfDot) : "";

        eventType = indexOfDot > 0 ? eventType.substring(0, indexOfDot) : eventType;
        handler = handler == undefined ? eventData : handler;
        eventData = typeof eventData == "function" ? {} : eventData;

        return this.each(function() {
            var $this = $(this);
            var currentAttrListener = this["on" + eventType];

            if (currentAttrListener) {
                $this.bind(eventType, function(e) {
                    return currentAttrListener(e.originalEvent); 
                });

                this["on" + eventType] = null;
            }

            $this.bind(eventType + eventNameSpace, eventData, handler);

            var allEvents = $this.data("events") || $._data($this[0], "events");
            var typeEvents = allEvents[eventType];
            var newEvent = typeEvents.pop();
            typeEvents.unshift(newEvent);
        });
    };})(jQuery);

要注意的事情:

  • 這還沒有經過充分的測試。
  • 它依賴于jQuery框架的內部結構,而不是改變(僅用1.5.2進行了測試)。
  • 除了作為源元素的屬性或使用jQueryBIND()和其他相關函數綁定之外,它不一定會在事件偵聽器之前觸發。


查看完整回答
反對 回復 2019-07-10
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

如果順序很重要,您可以創建自己的事件,并在其他回調觸發這些事件時將回調綁定到激發。

$('#mydiv').click(function(e) {
    // maniplate #mydiv ...
    $('#mydiv').trigger('mydiv-manipulated');});$('#mydiv').bind('mydiv-manipulated', function(e) {
    // do more stuff now that #mydiv has been manipulated
    return;});

至少是這樣的。


查看完整回答
反對 回復 2019-07-10
  • 3 回答
  • 0 關注
  • 507 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號