jQuery mousedown找到关于哪个事件被触发的确切元素

时间:2011-06-09 07:38:15

标签: jquery mouseevent

您好我有这个HTML代码

<th scope="col" class="" style="width: 13px;">
   <div class="some-handle"></div>
  <a href="javascript:__doPostBack('ucPWP$ctl03$3056$GVReport','Sort$3')">Passengers</a>
</th>

并拥有此JS代码

  $("Table tr th").mousedown(function (e) {  
    /*mousedown code goes here... */
    /* ignore if mousedown occur on div "some-handle" */
  }

现在我试着抓住mousedown发生在具有“some-handle”类的div上。 我能这样做吗?

4 个答案:

答案 0 :(得分:10)

检查e.target。这是事件发生的元素。

if ($(e.target).hasClass('some-handle')) {
    // fired on div "some-handle"
}

答案 1 :(得分:0)

你可以做这样的事情

  $("Table tr th").mousedown(function (e) {   

       if ($(this).hasClass('some-handle')) { 
        // ignore
        return False;
        }
        /*mousedown code goes here... */ 
      }

答案 2 :(得分:0)

你需要做的是,当鼠标悬停在th div上时,在some-handle上存储一个值,然后在鼠标结束时检查此值th元素:

$("Table tr th").mousedown(function (e) {  
    /*mousedown code goes here... */
    /* ignore if mousedown occur on div "some-handle" */
    if(!$(this).data('overSomeHandle')) {
        // do your code here
    }
}

$('.some-handle').hover(
    function(){
        // we are over some-handle div
        $(this).parent().data('overSomeHandle', true);
    }, 
    function(){
        // we are out of some-handle div
        $(this).parent().data('overSomeHandle', false);
    }
);

答案 3 :(得分:0)

我认为您遇到了麻烦,因为您的<DIV>嵌套了一个链接。链接点击将触发覆盖我怀疑的代码。

因此,您需要在实现代码之前处理单击:

$("Table tr th").mousedown(function (e) 
{            
    e.preventDefault(); //this nullifies the click
    if ($(this).hasClass('some-handle')) 
    {          
        // ignore         
        return False;         
    }else{
        /*mousedown code goes here... */          
    }
});