jquery如果已被点击

时间:2013-01-10 06:57:46

标签: jquery jquery-mobile

我肯定有一个非常简单的答案:

我有一个搜索表单,当你专注于表单下方弹出窗体下面的其他按钮以允许你过滤选择时,我试图在搜索表单上模糊这些选项消失。目前,当您单击其中一个选项时,它会关闭选项菜单,因此我正在寻找一种方法来测试是否单击了这些选项。这是我到目前为止提出的代码:

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

3 个答案:

答案 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()并点击选项元素本身