我的问题是当右侧按钮发生mousedown
事件时我需要检查是否有div
如果没有,那么我的flag
全局variable
会变为假,但我是没有达到那个条件。
我的jQuery脚本如下。
var flag = true;
$(document).mousedown(function(event){
if( event.button == 2 ) {
if ($(event.target).parent().is('.draggable')){
$el = $(event.target).parent();
flag = true;
}else{
flag = false;
}
}
});
jsp代码:
<div class="main">
<div class="draggable" >
<a href="#"><div class="inside"></div></a>
</div>
</div>
答案 0 :(得分:2)
试试这个我认为还需要一个父母。希望它会奏效。 因为几个月前我遇到了同样的问题。
$(document).mousedown(function(event){
if( event.button == 2 ) {
if ($(event.target).parent().parent().is('.draggable')){
$el = $(event.target).parent().parent();
flag = true;
}else{
flag = false;
}
}
});
答案 1 :(得分:1)
我认为你需要的是使用nearest()方法,因为结构有时会有所不同
所以你的代码可能就像
$('mousedown',function(event){
var $draggable;
if( event.which == 2 ) {
$dragable = $(event.target).closest('.draggable');
if ($dragable.length){
$el = $dragable;
flag = true;
}else{
flag = false;
}
}
});
请注意,event.which还可以按下按钮(mousedown和mouseupevents),报告左按钮1,中间2,右3。使用event.which而不是event.button
使用parent
方法意味着中间始终只存在两个祖先。依赖严格的结构会导致刚性和容易出错的代码。对于这种情况,IMO使用closest
方法代替parent
是一种更好的方法。