91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

JavaScript 事件冒泡與捕獲怎樣控制

小樊
82
2024-10-24 08:44:58
欄目: 編程語言

在 JavaScript 中,事件冒泡和捕獲是事件傳播的兩種機制。要控制這兩種機制,你可以使用以下方法:

  1. 使用 addEventListener 方法的第三個參數:

    當使用 addEventListener 方法為元素添加事件監聽器時,可以傳遞一個可選的第三個參數。這個參數決定了事件觸發時,監聽器的執行順序。取值如下:

    • false(默認值):事件觸發時,監聽器按照它們被添加的順序執行,即事件冒泡階段先執行捕獲階段的監聽器,然后執行目標元素上的監聽器,最后執行冒泡階段的監聽器。
    • true:事件觸發時,監聽器按照它們被添加的逆序執行,即事件冒泡階段先執行目標元素上的監聽器,然后執行捕獲階段的監聽器,最后執行冒泡階段的監聽器。

    示例:

    const button = document.querySelector('button');
    const parent = button.parentElement;
    
    function bubbleHandler() {
      console.log('Bubble handler');
    }
    
    function captureHandler() {
      console.log('Capture handler');
    }
    
    parent.addEventListener('click', bubbleHandler, false); // 事件冒泡階段執行
    parent.addEventListener('click', captureHandler, true); // 事件捕獲階段執行
    
  2. 使用 Event 對象的 stopPropagation 方法:

    當事件觸發時,你可以使用 stopPropagation 方法阻止事件繼續傳播。這樣,事件就不會觸發冒泡或捕獲階段的監聽器。

    示例:

    const button = document.querySelector('button');
    const parent = button.parentElement;
    
    function bubbleHandler() {
      console.log('Bubble handler');
    }
    
    function captureHandler() {
      console.log('Capture handler');
    }
    
    parent.addEventListener('click', bubbleHandler);
    parent.addEventListener('click', captureHandler);
    
    button.addEventListener('click', (event) => {
      event.stopPropagation(); // 阻止事件冒泡
    });
    

通過合理地設置第三個參數和調用 stopPropagation 方法,你可以根據需要控制事件冒泡和捕獲的執行順序。

0
普格县| 栾川县| 黄梅县| 久治县| 措勤县| 上杭县| 石棉县| 竹北市| 偃师市| 广安市| 晋州市| 山西省| 凤凰县| 宜君县| 商都县| 察哈| 宝应县| 唐山市| 乌兰浩特市| 玛纳斯县| 广西| 遂川县| 迁安市| 余庆县| 南部县| 晋城| 莱阳市| 海门市| 原平市| 宣威市| 改则县| 台北市| 桐乡市| 嘉兴市| 汽车| 江孜县| 临湘市| 砀山县| 承德县| 礼泉县| 介休市|