jquery - 阻止对e.target的任何子元素执行click和touchstart操作

时间:2015-07-15 22:27:07

标签: jquery

我有以下jQuery代码设置:

$(document).on('click touchstart', function (e) {
    if ( (!$(e.target).hasClass('sb')) ) {
     $('#features .sb .screen').animate({ top: '6.438em' }, 150);
    }
}

修改以下代码:

<div class="item">

<div class="sb">
<p>
<a class="title" href="#">my title</a>
<a href="#">some other link</a>
</p>
</div>

</div>

如果元素hasClass为sb,我怎么告诉目标不仅忽略任何动作,还要对嵌套的p,.title或链接等任何子元素不采取行动?

1 个答案:

答案 0 :(得分:2)

使用closest()length

检查是否是孩子
$(document).on('click touchstart', function (e) {
    if ( !$(e.target).closest('.sb').length ) {
     $('#features .sb .screen').animate({ top: '6.438em' }, 150);
    }
}

您不需要与hasClass()核对,因为closest()将以元素本身开头