0

我试图阻止单击处理程序根据同一元素的 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

4

1 回答 1

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);
  }
});
于 2013-02-13T15:23:46.747 回答