无法获得jQuery:没有选择器工作

时间:2014-04-23 21:22:17

标签: jquery jquery-selectors

如果在下面的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();
  }
});

2 个答案:

答案 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();
  }
});

http://jsbin.com/sobecume/3

答案 1 :(得分:0)

我认为你的代码实际上运行正常,问题是你的HTML基本上只是你的包装容器。看看这个jsbin,我添加了一个明显与包装div分开的盒子:

http://jsbin.com/sobecume/5/