如果在下面的jsbin的输入字段中键入一个字符,div将向下滑动。点击div.wrap及其子元素以外的任何元素,我希望这个div能够向上滑动。我似乎无法做到这一点。它始终与我想要的相反。
http://jsbin.com/sobecume/1/edit?html,css,js,console,output
JS
$('.blah').keyup(function(){
$('.blah2').slideDown();
});
$('body:not("#wrap")').click(function(){
console.log("click!");
var display = $('.blah').css('display');
if (display !== 'none') {
$('.blah2').slideUp();
}
});
答案 0 :(得分:1)
我认为你不能设计一个选择器来检查一个元素的祖先(我想?)。
试试这个:
$('*').click(function(){
if($(this).closest('#wrap').length>0){return false;}
console.log("click!");
var display = $('.blah').css('display');
if (display !== 'none') {
$('.blah2').slideUp();
}
});
答案 1 :(得分:0)
我认为你的代码实际上运行正常,问题是你的HTML基本上只是你的包装容器。看看这个jsbin,我添加了一个明显与包装div分开的盒子: