2015-06-19 264 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