關於js事件執行順序小技巧


js事件執行順序是js中一個老生常談的一個話題,

聊這個話題之前我們先談談怎么給頁面元素綁定我們需要的事件

1.給頁面元素綁定事件

a)直接在元素上面加上需要綁定的事件,如

<button type="button" onclick="console.log('111')"></button>

結果如下:

此方法不建議使用,有兩方面的原因,

1)此方法綁定的方法必須為一個全局的方法,而通常我們需要綁定的方法都是針對某一處特定的方法,並不具備通用性,如果全部寫成全局方法,不利於我們模塊化開發。

2)此綁定方法只能給元素綁定一個方法,而我們對於元素綁定的方法可能有多個。

b)dom元素生成后,給其綁定方法。

注:此處插入一句,保證dom元素已經生成了是我們給其綁定方法的前提。

  jquery1.7版本棄用了live,目前筆者查閱資料沒有找到可以給未來元素綁定事件的方法,如果有那我讀者知道相關的方法,歡迎給筆者留言。

<button type="button">點我</button>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
       $('button').on('click',function(){
            console.log('111');
        })     
</script>

結果如下:

此方法的好處就是可以解決直接在元素上面添加方法的兩個弊端,並且事件的執行順序是按照我們給元素添加事件的順序依次進行。

這里就講到了我們現在要說的事件執行順序,大多數時候,事件執行順序的控制,就通過我們添加事件順序來控制。

但是,有時候,我們項目中會應用一些別人的插件,而此時,我們想要控制事件在插件事件之后就不是很好控制了,比較插件事件可能並沒有回調函數的設置。

這時,筆者就想到了事件的另外一個特性,事件冒泡。

事件捕獲指的是從document到觸發事件的那個節點,即自上而下的去觸發事件。相反的,事件冒泡是自下而上的去觸發事件。綁定事件方法的第三個參數,就是控制事件觸發順序是否為事件捕獲。true,事件捕獲;false,事件冒泡。默認false,即事件冒泡。Jquery的e.stopPropagation會阻止冒泡,意思就是到我為止,我的爹和祖宗的事件就不要觸發了。

關於事件冒泡和事件捕獲這里就不再贅述,不懂的童鞋請移步https://www.cnblogs.com/christineqing/p/7607113.html

而這里要說的是利用事件冒泡的特性,來控制事件執行順序。

<div id="parent">
     <div id="child" class="child"></div>
</div>

如上 所示,如果我們要在chilid上面綁定的所有方法都執行完了以后執行一個方法,如,console.log('111')

我們可以將此方法綁定到parent上,這樣就可以保證,此方法一定是在child上面綁定的所有方法執行完成了以后執行。

今天就到這里啦,謝謝大家,如果有錯誤,請大家多多指出來~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM