Javascript jquery选择器帮助。除了指定的选择器之外的所有内容
我可以使用以下功能打开覆盖菜单:Javascript jquery选择器帮助。除了指定的选择器之外的所有内容,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我可以使用以下功能打开覆盖菜单: $('.context-switch').click(function() { $(".context-switch-menu").toggle(); }); 要隐藏菜单,我希望用户能够单击“.上下文切换菜单”之外的任何区域 我正在尝试:not(),但没有成功。试试这个,我们不希望在单击元素本身时调用函数,也不希望在单击元素内部时调用函数。这就是为什么我们需要两张支票 您希望使用您单击的元素e.target $("html").cli
$('.context-switch').click(function() {
$(".context-switch-menu").toggle();
});
要隐藏菜单,我希望用户能够单击“.上下文切换菜单”之外的任何区域
我正在尝试:not(),但没有成功。试试这个,我们不希望在单击元素本身时调用函数,也不希望在单击元素内部时调用函数。这就是为什么我们需要两张支票 您希望使用您单击的元素
e.target
$("html").click(function(e){
if( !$(e.target).is(".context-switch-menu") &&
$(e.target).closest(".context-switch-menu").length == 0
)
{
alert("CLICKED OUTSIDE");
}
});
实时小提琴:之所以如此困难,是因为事件冒泡 您可以尝试以下方法:
$('.context-switch').click(function(e) {
e.stopPropagation();
$(".context-switch-menu").toggle();
});
$(".context-switch-menu").click(function(e){
e.stopPropagation();
});
$("body").click(function(e){
$(".context-switch-menu").hide();
});
e.stopPropagation()
防止单击事件冒泡到正文
处理程序。如果没有它,任何单击.context switch
或.context switch menu
也会触发主体事件处理程序,这是您不希望的,因为它会使的效果无效。context switch
单击一半的时间。(即,如果状态是隐藏的,然后单击显示,事件将冒泡并触发正文
处理程序,该处理程序将再次隐藏.context switch菜单
。如果不进行测试,是否可以执行此操作?:
$('.context-switch').click(function() {
$(".context-switch-menu").show();
});
$(document).click(function() {
$(".context-switch-menu").hide();
});
与其使用文档
,'html'
或'body'
也可以使用。这里只是一个想法,基于其他人过去的建议:
$('body').click(function(e) {
if ($(e.target).hasClass('context-switch')) {
return;
}
$(".context-switch-menu").hide();
});
$('.context-switch').click(function() {
$(".context-switch-menu").toggle();
return false;
});
$(document).click(function(e){
//this should give you the clicked element's id attribute
var elem = $(e.target).attr('classname');
if(elem !== 'context-switch-menu'){
$('.context-switch-menu').slideUp('slow');
//or however you want to hide it
}
});
这将在contextmenu中的元素事件发生之前关闭contextmenu。我想您可能希望上的停止播放
。实际上,上下文切换菜单
。或者另外?是的,事件冒泡让我们在顶部捕捉事件,假设页面上的其他元素都没有杀死冒泡。
$(document).click(function(e){
//this should give you the clicked element's id attribute
var elem = $(e.target).attr('classname');
if(elem !== 'context-switch-menu'){
$('.context-switch-menu').slideUp('slow');
//or however you want to hide it
}
});