您好我有这个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上。 我能这样做吗?
答案 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... */
}
});