0

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

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

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

3 回答 3

2

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

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

尝试使用mousedown()而不是click()

于 2013-01-10T07:10:16.970 回答
0

如果您需要在单击选项后关闭选项菜单,请延迟切换它,例如。使用 jssetTimeout()并点击选项元素本身

于 2013-01-10T07:12:39.047 回答
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();
});
于 2013-01-10T07:09:32.450 回答