代码之家  ›  专栏  ›  技术社区  ›  user63898

Javascript使用addEventListener或其他方法定义在onclick事件上首先调用的函数

  •  0
  • user63898  · 技术社区  · 4 年前

    我在脚本A.js中定义了遗留的js代码,我不知道该怎么做。。 它具有简单的onlick事件和附加的函数

    $(document).ready(function () {
        //jquery onclick 
        $("#create_button").click(function (e) {
        ..... 
        }
    }    
        //html
         <button class="btn btn-primary" id="create_button"
                                                name="create_button">
                                            Create New app
                                        </button>
    

    $(window).on('load', function(){
        document.getElementById("create_button").addEventListener("click", () => {
                                          self.MyFirstFunction()
                         }, false);
    
    }
    

    我的问题是如何定义self.MyFirstFunction()将首先触发?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Alan Omar    4 年前

    设置 useCapture

    对于附加到事件目标的事件侦听器,事件处于目标阶段,而不是捕获和冒泡阶段。捕获阶段的事件侦听器在任何非捕获阶段的事件侦听器之前被调用。

    $('#element').click(function(){
      console.log("first registered Handler in source code")
    })
    
    document.getElementById("element").addEventListener("click",function(e){
    console.log("second registered Handler in source code")},true); // Notice the last argument is true 
    #element{
      width:200px;
      height:100px;
      background:lightgreen;
      }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="element"></div>
        2
  •  1
  •   lejlun Jason    4 年前

    您可以设置 useCapture 英国国旗 eventListener eventListeners .

    就你而言:

    scriptB.js

    $(window).on("load", function () {
        document
            .getElementById("create_button")
            .addEventListener("click", () => self.MyFirstFunction(), true);
    });
    

    演示:

    let button = document.querySelector("#button")
    
    button.addEventListener("click", () => {
      console.log("I was added first")
    })
    
    button.addEventListener("click", () => {
      console.log("I was added second")
    }, true)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button id="button">Demo Button</button>