我肯定有一个非常简单的答案:
我有一个搜索表单,当你专注于表单下方弹出窗体下面的其他按钮以允许你过滤选择时,我试图在搜索表单上模糊这些选项消失。目前,当您单击其中一个选项时,它会关闭选项菜单,因此我正在寻找一种方法来测试是否单击了这些选项。这是我到目前为止提出的代码:
$("#search").blur(function(){
$("#selector").click(function(){
return false;
});
$("#selector").toggle();
});
同样尝试执行以下操作会产生失败的结果:
var is_clicked = true;
$("#selector").click(function(){
is_clicked = false;
});
console.log ( is_clicked ); // always returns true
答案 0 :(得分:2)
请参阅:http://jsfiddle.net/gP8Jg/1/
$("#search").blur(function(){
$("#selector").mousedown(function(){
return false;
});
$("#selector").toggle();
});
$("#search").focus(function(){
$("#selector").fadeIn();
});
尝试使用mousedown()
代替click()
答案 1 :(得分:0)
这始终返回true,因为console.log是同步执行的:
var is_clicked = true;
$("#selector").click(function(){
is_clicked = false;
// console.log( is_clicked ); // will yeild false
});
console.log ( is_clicked ); // always returns true
我不太明白你在这里做了什么:
$("#search").blur(function(){
$("#selector").click(function(){
return false; // Cancels the click
});
$("#selector").toggle(); // Slides vissible/hidden $('selector')
// There is no code here that checks state of buttons or any other element
// on the page.
});
点击后切换元素是在它自己的点击处理程序中完成的:
$('#selector').click(function (event) {
$('#selector').toggle();
});
答案 2 :(得分:0)
如果您需要在单击选项后关闭选项菜单,请延迟切换,例如。使用js setTimeout()
并点击选项元素本身