使用jquery关闭选择器绑定哪个元素?

时间:2011-04-06 13:10:02

标签: jquery html

我有一个自定义创建的(没有使用插件,除了jquery)选择器,如下所示:

selector

项目的列表是名为 .selectorList 的元素。

我这样打开它:

$("#selectorReplacement").click(function(){
   $("#.selectorList").stop(true,true).slideToggle(0);
});

一切都好,功能很好,问题就在于我要关闭它。我可以通过点击 #selectorReplacement 来关闭它,因为必须这样做,但我也希望当我点击在网站上的其他地方时关闭此元素,就像原始的<select>一样。

我在哪里绑定它?如果是这样的话:

$("body").click(function(){
   $(".selectorList").slideUp(0);
});

然后我甚至无法打开它,因为 body 跨越所有网站,所以即使我点击元素开启器,它也会因为这个绑定而自动关闭。

我需要类似的东西,$(“除#selectorReplacement之外的所有东西”)

我该怎么做?

4 个答案:

答案 0 :(得分:5)

返回false
$("#selectorReplacement").click(function(){
   $("#.selectorList").stop(true,true).slideToggle(0);
   return false;
});

答案 1 :(得分:1)

修改开放代码以执行此操作:

$("#selectorReplacement").click(function(e){
   e.stopPropagation();
   $("#.selectorList").stop(true,true).slideToggle(0);
});

当您单击选择器时,这应该会阻止事件冒泡到身体。

答案 2 :(得分:0)

你可以这样做:

$('html').click(function(e){
    if($(e.target).closest('#selectorReplacement').length == 0) {
        $('#selectorReplacement').slideUp(0);
    }
});

或者你可以设置一个超时功能,在最短时间后关闭你的盒子。

答案 3 :(得分:0)

对于我的自定义上下文菜单,我将单击事件绑定到文档。

$(document).bind('click', function() {});