2012-05-10 65 views
1

工作,我把下面的代碼從a question這裏在計算器上:jQuery腳本不會在Firefox

$('body').click(function(event) { 
    if (!$(event.target).closest('#myDiv').length) { 
     $('#myDiv').hide(); 
    }; 
}); 

唯一的問題是,在Firefox(Safari瀏覽器上工作)不工作。這是爲什麼? 我應該如何改變它以使其與Firefox兼容?

+0

哪部分不起作用?該事件不會觸發?或者選擇器沒有找到任何東西? – inkedmn

回答

1

這是一個老把戲從Which HTML element is the target of the event?複製

$(function() { 
    $('body').click(function(event) { 

     var targ; 
     if (event.target) targ = event.target; 
     else if (event.srcElement) targ = event.srcElement; 
     if (targ.nodeType == 3) // defeat Safari bug 
      targ = targ.parentNode; 

     if (!$(targ).closest('#myDiv').length) { 
      $('#myDiv').hide(); 
     }; 
    }); 

}); 

DEMO 點擊的div以外將hied股利!$(targ).closest('#myDiv').length

+0

它適用於演示,但在我的網站上不起作用。我在jQuery UI 1.8.16中使用jQuery 1.7.2。唯一不同於該代碼的是在設置'$(「#myDiv」)。draggable();'之前。爲什麼它不起作用? – Shoe

0

試試這個,讓我知道,如果它不工作

$('body').click(function(event) { 
    target = (window.event) ? window.event.srcElement /* for IE */ : event.target; 
    if (!($(target).closest('#myDiv').length>0)) { 
     $('#myDiv').hide(); 
    }; 
}); 
+0

它不起作用 – Shoe