从mousedown处理程序取消单击处理程序

时间:2013-02-13 14:49:40

标签: javascript jquery events handlers

我正在尝试阻止点击处理程序根据同一元素的mousdown处理程序内的条件触发。考虑一下:

var bool = true;

$('button').click(function() {
  console.log('clicked');
}).mousedown(function(e) {
  bool = !bool;
  if ( bool ) {
    // temporary prevent the click handler, how?
  }
});

处理程序之间是否存在交叉通信的简洁方法?这是一个箱子:http://jsbin.com/ipovon/1/edit

1 个答案:

答案 0 :(得分:1)

虽然这很有效,但我不确定这是你想要的答案。如果你最初设置bool=false;,它基本上是一个双击功能。

var bool = true;

$('button').mousedown(function(e) {
  bool = !bool;
  if ( bool ) {
    $(this).unbind('click');
  }
  else
  {
    $(this).click(function(){
        console.log('clicked');
    });
  }
});

<强>更新

另外,如果您愿意,可以像这样从mousedown拉出点击功能:

var bool = true;
function buttonClick(){
  console.log('clicked');
}
$('button').mousedown(function(e) {
  bool = !bool;
  if ( bool ) {
    $(this).unbind('click');
  }
  else
  {
    $(this).click(buttonClick);
  }
});