javascript addEventListener without selecting children

后端 未结 3 935
醉酒成梦
醉酒成梦 2021-01-02 01:04

I need to use javascript only for this project. Sorry, no jQuery (I feel ashamed as well).

I am adding an addEventListener to a div. \"Problem\

3条回答
  •  温柔的废话
    2021-01-02 01:40

    Here's an alternative, which keeps your myObjDown function in line with a typical event handler. (using e.target as reference to the event invoking element)

    var CssSelector = "div.className";
    var elms = document.querySelectorAll(CssSelector);
    
    for (i = 0; i < elms.length; i++) {
        elms[i].addEventListener("mousedown", myObjDown.bind(null, {"target":elms[i]}, false);
    }
    
    function myObjDown(e) {
      console.log("event: %o - target: %o", e, e.target);
    
      var elm = e.target;
      //do stuff here
    }
    

    It was suggested that ..

    this method could cause memory leaks with versions of some browsers. If anyone experiences this or has any valuable insights. Please comment.


    an alternative, in this regard would be

    var CssSelector = "div.className";
    var elms = document.querySelectorAll(CssSelector);
    
    for (i = 0; i < elms.length; i++) {
        elms[i].addEventListener("mousedown", myObjDown.bind(null, elms[i].id}, false);
    }
    
    function myObjDown(id) {
      console.log("element: %o ", document.getElementById(id));
    
      //do stuff here
    }
    

提交回复
热议问题