jquery 点击元素以外任意地方隐藏该元素的方法

$(".select_box").click(function(){$(".option").show();})$(document).click(function(){... $(".select_box").click(function(){
$(".option").show();
})
$(document).click(function(){
if($(".option").css('display')=='block'){
$(".option").hide();
}
});

这样不行啊,点击select_box时也会触发第二个事件,请大神来指导一下...在线等
展开
 我来答
灰常了dei
推荐于2017-12-01 · TA获得超过1736个赞
知道小有建树答主
回答量:596
采纳率:60%
帮助的人:628万
展开全部
第一先实现点击任何地方都隐藏该元素(假设id="bar")

$(document).click(function(){
$("#bar").hide();

});
那么bar也属于document,点击bar也会让自己隐藏,显然这不是想要的,这时候要阻止冒泡事件,即document的事件对bar无效
$("#bar").click(function(event){
event.stopPropagation();

});
偷阉道鸦枷释7X
2017-12-01 · TA获得超过195个赞
知道小有建树答主
回答量:87
采纳率:100%
帮助的人:80.3万
展开全部

$(document)  是包含所有 元素的  所以你点击select_box 也会隐藏

你应该在 $(document) 点击事件的回调函数注 把 select_box  规避掉

$(document).click(function(e){
  if ($(e.target).find('.select_box').length !== 0 ){
  // 如果 你点击的这个元素 里面包含 select_box (也就是查找出来的dom 数量不是0)
  // 就执行你需要隐藏的方法  当你点击的元素是select_box 或者他里面的元素 时候,
  // 里面肯定不会 包含 select_box  也就不会执行 隐藏的方法
    if($(".option").css('display')=='block'){
            $(".option").hide();
        }
  }
    
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zh52722
2017-12-01 · TA获得超过389个赞
知道小有建树答主
回答量:325
采纳率:75%
帮助的人:184万
展开全部

给你写个大概,我测试可行的:

//获取$(".option")绝对位置以及宽度和高度
var top = $(".option").offset().top;
var left = $(".option").offset().left;
var height = $(".option").height();
var width = $(".option").width();
function getX(e) {//点击鼠标,获取鼠标X位置
 e = e || window.event;
   
return e.pageX || e.clientX + document.body.scroolLeft;
}

function getY(e) {//点击鼠标,获取鼠标Y位置
  e = e|| window.event;
 return e.pageY || e.clientY + document.boyd.scrollTop;
}
$(document).click(function(e){
    if(getX(e) > left && getX(e) < left + width && getY(e) > top && getY(e) < top + height){
        return;
    } else {
        $(".option").hide();
    }
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友992e050a8
推荐于2016-01-24 · TA获得超过583个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:322万
展开全部
$(".select_box").click(function(){
        $(".option").show();
    })
    // 这样把select_box 给除去
    $(document).not(".select_box").click(function(){
        if($(".option").css('display')=='block'){
            $(".option").hide();
        }
    });
追问
第二个事件  点击没有效果   没有触发
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handangaoyang
2013-11-21 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:919万
展开全部
    $(document:not(".select_box")).click(function(){
        if($(".option").css('display')=='block'){
            $(".option").hide();
        }
    });
追问
这个事件我点击了空白处,没有触发,而且document后面用冒号不对呢,要用.
追答
哎~~~,我应该测试一下的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式