【问题标题】:Get array of elements from event从事件中获取元素数组
【发布时间】:2010-05-24 03:23:11
【问题描述】:

我几乎没有嵌套的 DIV 元素。例如:

<div id='id1'><div id='id2'>content</div></div>

我使用 jQuery 将事件附加到 DIV 事件处理程序:

$('div').click(function () {
    //some code   
});

当用户点击内容时会有两个事件。所以会有两个同时发生的事件。是否可以进入具有点击事件的对象 (DIV) 的事件处理程序数组?

是否可以使用除 jQuery 之外的其他框架?

【问题讨论】:

  • 你的问题有点含糊。您是在问如何获取 DOM 中附加了 click 事件处理程序的所有元素的列表?
  • 请澄清您的问题。您是只想将事件处理程序附加到最里面的 div,还是找出所有附加了点击处理程序的 div?
  • 所以你想得到一个包含所有子元素被点击的 div 的数组?
  • 当用户单击内部 DIV 元素时,会触发两个事件(第一个 DIV 的单击事件和第二个 DIV 的单击事件)。在这种情况下我想要一个数组 [DIV1, DIV2]。
  • @Anton - 我的回答给出了你想要的数组,虽然我使用了e.stopPropagation(),所以它只对最里面的div 有效。如果需要,您可以删除该行。

标签: javascript jquery html javascript-events


【解决方案1】:

如果你真的想要一个 div 对象的数组来获取点击事件,你可以这样做:

$('div').click(function(e) {
    var array = $(e.target).parents('div').andSelf().get();
    alert(array);
    e.stopPropagation();;
});

不确定这是否是您想要的,但array 将包含divs 的数组。

【讨论】:

    【解决方案2】:

    如果你这样做,那么当点击内部 div 时外部处理程序不会触发:

    $('div').click(function () {
        //some code
    
        return false;  
    });
    

    如果你想获得所有被点击的 div 的数组,使用这个:

    $('div').click(function () {
        //some code
        var divs = $(this).parents('div'); //Gets all the divs which are ancestors
    
        return false; //Prevent event bubbling 
    });
    

    【讨论】:

      【解决方案3】:

      如果你的处理程序是这样的问题:

      $('div').click(function () {
          //some code   
      });
      

      你可以像这样得到里面的div:

      $('div').click(function () {
          $(this).find("div") //do something
      });
      

      【讨论】:

        猜你喜欢
        • 2014-01-19
        • 2019-01-21
        • 2014-12-19
        • 1970-01-01
        • 2020-10-10
        • 2019-12-17
        • 2016-02-21
        • 1970-01-01
        • 2023-01-05
        相关资源
        最近更新 更多