我有一个自定义创建的(没有使用插件,除了jquery)选择器,如下所示:
项目的列表是名为 .selectorList 的元素。
我这样打开它:
$("#selectorReplacement").click(function(){
$("#.selectorList").stop(true,true).slideToggle(0);
});
一切都好,功能很好,问题就在于我要关闭它。我可以通过点击 #selectorReplacement 来关闭它,因为必须这样做,但我也希望当我点击在网站上的其他地方时关闭此元素,就像原始的<select>
一样。
我在哪里绑定它?如果是这样的话:
$("body").click(function(){
$(".selectorList").slideUp(0);
});
然后我甚至无法打开它,因为 body 跨越所有网站,所以即使我点击元素开启器,它也会因为这个绑定而自动关闭。
我需要类似的东西,$(“除#selectorReplacement之外的所有东西”)
我该怎么做?
答案 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() {});