如何知道点击了哪个元素

Posted

技术标签:

【中文标题】如何知道点击了哪个元素【英文标题】:How to know which element was clicked 【发布时间】:2012-04-18 20:36:11 【问题描述】:

我有这个代码:

( function() 
  var i, ii, e = Elements.Select('.drop');
  for ( i = 0, ii = e.length; i < ii; i++ ) 
    e [ i ].onclick = function () 
      alert ( e [ i ].getAttribute('data-open') );
    
  
)();

我所做的是,当单击具有 className 'drop' 的元素时,会提醒我单击的元素的属性。但是没用。

这段代码是我用来通过她的类名选择一个元素的代码。 不要太在意,它只是向我们展示,只是向他们展示我是如何选择元素的。

(function() 
  Select : function ( element )  
  var object, index  = element.substr( 0, 1 ), name = element.substr( 1, element.length ),      clases = [ ], i, all = document.body.getElementsByTagName("*"); 
  switch ( index )  
    case '.' : 
      for ( i = 0; i < all.length; i ++ )  
        if ( all [ i ].className == name )    
          clases.push( all [ i ] ); 
         
       
      object = clases; 
    break;  
    return object 
     
   
)();

¿答案?

【问题讨论】:

【参考方案1】:

你可以使用 jquery 来做这个。这里,'this' 关键字为你提供了当前被点击的元素。此函数在类名为“drop”的任何元素的单击事件上触发。

$(".drop").click( function()
   var x=$(this).attr("data-open");
);

【讨论】:

你能帮我用 JQuery 吗? 我不能 100% 确定我在 javascript 中执行此操作的方法是否有效,但也会尝试使用该方法为您提供解决方案.. 即使使用 jQuery,上面的代码也无法运行。使用 POJS this.getAttribute('data-open') 或使用 jQuery $(this).attr('data-open')【参考方案2】:
( function() 
  var i, ii, e = Elements.Select('.drop');
  for ( i = 0, ii = e.length; i < ii; i++ ) 
    e [ i ].onclick = function () 
      //by the time that this gets executed, the for loop is ended, thus i equals ii
      // instead of using e[i]... try using this : 
      alert (this.getAttribute('data-open'));
      alert ( e [ i ].getAttribute('data-open') );
    
  
)();

【讨论】:

以上是关于如何知道点击了哪个元素的主要内容,如果未能解决你的问题,请参考以下文章

angularjs中使用ng-repeat渲染页面,点击元素,如何知道点击的哪个元素

jquery如何判断所点击元素是哪个

如何知道拖动元素在哪个元素之上?

Javascript 问题,给LI标签添加一个Onclick事件后,如何辨别点击了li中哪个元素?

JavaScript 点击了哪个元素?

JS怎样判断鼠标点击了哪个元素?