一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

jQuery 事件隊列調整方法

大家都發現,通過jQuery綁定事件是件非常容易的事情
復制代碼 代碼如下:
<TEXTAREA class=Javascript name=code rows=15 cols=50>$("a").click(function(){
    console.info("A");
    return false;
});
</TEXTAREA>

但是A事件綁定后,我發現我需要B事件來決定其是否觸發,好辦,現在就改。
復制代碼 代碼如下:
<TEXTAREA class=Javascript name=code rows=15 cols=50>$("a").click(function(){
    console.info("B");
    return false;
});
$("a").click(function(){
    console.info("A");
    return false;
});
</TEXTAREA>

真的能夠阻止后面的click事件觸發嗎?事與愿違。
如果B事件需要通過異步調用來判斷A事件是否需要觸發呢?
復制代碼 代碼如下:
<TEXTAREA class=Javascript name=code rows=15 cols=50>$("a").click(function(){
    $.ajax({
        url:"b.html",
        success:function(msg){
            if(msg){
                console.info("pass");
                return true;
            }else{
                console.info("nopass");
                return false;
            }
        }
    });
});
$("a").click(function(){
    console.info("B");
    return false;
});
</TEXTAREA>

事實發現根本不可能,那怎么辦呢?
先說幾種思路:
將后綁定的事件通過另外一種觸發,比如A事件是綁定在click上,那么B事件綁定在mouseover上,先觸發mouseover再通過它來阻止click事件。(后來經過研究,發現這幾乎是不可能的事情)
將2個事件通過jquery的queue進行處理。(這個確實可以解決先后觸發的問題,但是現實的情況是項目中所有的事件綁定已經全部寫好,目前需要每個按鈕事件前都加上1個判斷的AJAX請求。要不就是所有的按鈕事件全部重寫,要么另外尋找一條路)
深入jQuery的事件機制,獲得其事件的隊列,針對其事件隊列進行處理。
復制代碼 代碼如下:
<TEXTAREA class=Javascript name=code rows=15 cols=50>//我們先讓其默認綁定個事件,稱其為A事件
$("a").click(function(){
    console.info(1);
    return false;
});
//現在我們要讓后面綁定的B事件先觸發,并且控制A事件是否觸發
//獲取對象a綁定的事件對象中的click事件
var event = $("a").data("events").click;
//因為這個a在我們的B事件中也需要用到,為了防止this對象的改變,因此特地聲明變量that保存
var that = $("a");
//下面就是B事件了,但是貌似好像沒有綁定啊
var B = function(){
    $.ajax({
        url:"b.html",
        success:function(msg){
            if(msg){
                console.info("pass");
                tt.call(that);
            }else{
                console.info("nopass");
            }
        }
    });
return false;
};
//關鍵對象,盡請對其多關注
var tt;
//關鍵代碼,盡請多關注
for(var i in event){
    tt = event[i];
    event[i] = B;//如果注釋此行,下面2行必須取消注釋。效果一樣,原理不同...
//delete(event[i]);
    //that.click(B);
    break;
}
</TEXTAREA>

問題貌似圓滿解決,但是AJAX的callback函數中的return,是否可以抓的到呢?

JavaScript技術jQuery 事件隊列調整方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一区二区三区深夜天堂 | 精品国语对白精品自拍视 | 久久久久久久久一级毛片 | 99久久综合狠狠综合久久 | 青青草色青伊人 | 欧美第一页 | 亚洲精品久中文字幕 | 国产精品国产午夜免费福利看 | 国产精品极品美女自在线看免费一区二区 | 欧美视频久久久 | 亚洲国产成人精品激情 | 国产精品欧美久久久久天天影视 | 国产精品视频免费播放 | 国产精品区网红主播在线观看 | 午夜久久久久久网站 | 最新毛片网站 | 极品销魂一区二区三区 | 美女网站视频黄色 | 国产精品偷伦视频免费观看了 | 亚洲人成一区二区三区 | 国产一级精品高清一级毛片 | 日韩一区二区久久久久久 | 99久久精品一区二区三区 | 日本在线观看www免费 | 国产精品亚洲国产三区 | 热99re久久精品2久久久 | 成人欧美日韩视频一区 | 精品国内一区二区三区免费视频 | 97人人看 | 国产小视频网址 | 夜夜揉揉日日人人视频 | 亚洲图片欧美日韩 | 91麻豆精品激情在线观看最新 | 国产成人美女福利在线观看 | 一区二区不卡视频 | 在线精品免费视频 | 久久九九久精品国产 | 国产成人综合网在线播放 | 91亚洲福利 | 日韩中文字幕亚洲无线码 | 黄色片网站在线免费观看 |