jquery on('click') handler for multiple elements referenced by vars

前端 未结 1 767
南方客
南方客 2021-01-20 14:29

N.B. I\'m aware that I add ids and combine these in a selector e.g. \"#myDiv1,#myDiv2\" so please refrain from suggesting this as it does not relate to my question.

1条回答
  •  说谎
    说谎 (楼主)
    2021-01-20 15:19

    • You can pass an array of DOM elements to the jQuery function:

      $([
          myDiv1.get(0), 
          myDiv2.get(0)
      ]).on('click', function(){ doSomething();});
      

      jsFiddle Demo

    • Another possible way is to use the .add() method:

      myDiv1.add(myDiv2).on('click', function(){ doSomething();});
      

      jsFiddle Demo

    • Put them in an array, loop through them and attach the same handler. I made the example with ES5 forEach, but feel free to use a simple for loop or $.each.

      [cucc, gomb].forEach(function (el) {
          el.on('click', handler);
      });
      

      jsFiddle Demo

    • If they have a common ancestor, put a common class on them and use event delegation. Depending on the number of your elements, this could be the best solution performance-wise, because you only have to attach one handler to the common ancestor.

      $('.ancestor').on('click', '.common', handler);
      

      jsFiddle Demo

    0 讨论(0)
提交回复
热议问题