2015-06-19 218 views
0

我想设置display:none;上一个ID,但只有当你点击ID本身,而不是IMG在ID不是jquery点击功能

$(":not('#lightbox img'),#lightbox").click(function() { 
     $("#lightbox").css("display", "none"); 
    }); 

有人可以告诉我怎么TE得到这个工作?

回答

3

如果你点击ID本身

然后使用Event对象的target财产一样

$("#lightbox").click(function(e) { 
     if(e.target.tagName != 'IMG'){ 
      $("#lightbox").css("display", "none"); 
     } 
    }); 

更新只

,检查targetid

$("#lightbox").click(function(e) { 
      if(e.target.id == 'lightbox'){ 
       $("#lightbox").css("display", "none"); 
      } 
     }); 
+0

@DNA,很高兴它帮助。不要忘记标记一个答案,你发现有帮助,因为点击答案 – AmmarCSE

+0

旁边的复选标记已被接受。对不起,我忘了这么做。 – DNA

0

做它,就像你写的,但改变的第一行:

$('#lightbox').find("*").add("#lightbox").click(function (event) { 
    $(this).is('img') ? event.stopPropagation() : $("#lightbox").css("display","none");}); 
+0

我不认为这会起作用,因为执行'$(“#lightbox”)。not('img')'只会返回一个id为'lightbox'的元素,它不是'img'。这不会处理**图片的儿童**不是图像 – AmmarCSE

+0

你是对的。修订。 – oMiKeY

+0

fwiw,它仍然没有工作http://jsfiddle.net/ammarcse/2nv7w8ys/1/抱歉,我无法帮助更多 – AmmarCSE