2013-01-10 48 views
0

这个我敢肯定,有一个非常简单的答案:jQuery的,如果已经被点击

我有一个搜索表单,当你专注在表单上其他按钮的形式下弹出,让你过滤选择,我试图让这些选项消失的搜索表单模糊不清。目前,当你点击其中一个选项时,它会关闭选项菜单,所以我正在寻找一种方法来测试这些选项是否被点击。下面是代码,我拿出这么远:

$("#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

将事件更改为'mouseover'和'mouseout' – diEcho

+0

这是针对OP中未提及的移动设备 – Peter

+0

所做的。我已经更新了标签 – diEcho

回答

2

看到这个:http://jsfiddle.net/gP8Jg/1/

$("#search").blur(function(){ 
    $("#selector").mousedown(function(){ 
     return false; 
    }); 
    $("#selector").toggle(); 
}); 
$("#search").focus(function(){ 
    $("#selector").fadeIn(); 
}); 

尝试使用mousedown()代替click()

+0

这大部分适用。如果您点击搜索,然后立即点击#选择器,它仍然会在第一次切换。它完成后,它虽然工作。任何想法,为什么它这样做? – Peter

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(); 
}); 
+0

好吧,合并这两个例子,你如何去执行'$(“#selector”)。toggle()'当选择器本身没有被点击时? – Peter

+0

@彼得我用你的要求更新了答案。 –

0

,如果您需要点击一个选项后关闭选项菜单,延时切换,例如。使用js setTimeout()并捕获选项元素本身的点击

相关问题