我正在尝试阻止点击处理程序根据同一元素的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
答案 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);
}
});