中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
印江| 大同市| 秭归县| 宝兴县| 凤阳县| 张北县| 绍兴县| 嵩明县| 黎川县| 克拉玛依市| 南木林县| 武山县| 封丘县| 星子县| 新竹市| 安远县| 洞口县| 商城县| 罗甸县| 宣威市| 龙陵县| 化隆| 泰和县| 军事| 抚州市| 明光市| 永城市| 潜山县| 民丰县| 霍城县| 利津县| 林西县| 日喀则市| 中山市| 兴国县| 渭源县| 济南市| 阿鲁科尔沁旗| 鄂托克前旗| 临夏市| 离岛区|