2012-05-10 3 views
1

Я взял следующий код из a question здесь на StackOverflow: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 1.7.2 с jQuery UI 1.8.16. Единственное, что отличается от этого кода, это то, что до того, как я установил '$ (« # 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