2015-05-21 111 views
0

我不知道爲什麼我得到這個錯誤,每次我嘗試比較目標時,我得到的不確定。如何隱藏UL僅在DOCUMENT外部點擊時才能隱藏UL?

我在這裏做錯了什麼?

menu.find('> li').each(function() { 
    var li = $(this); 
    var ul = li.find('> ul'); 
    var a = li.find('> a'); 

    if(ul.length) { 
     a.click(function(event) { 
      event.preventDefault(); 
      event.stopPropagation(); 

      if(a.hasClass('open')) { 
       a.removeClass('open'); 
      } 
      else { 
       a.addClass('open'); 
      } 

      ul.toggle(); 

      $(document).click(function() { 
       var target = $(event.target); 

       alert(target.attr('class')); 

       if(!target.is(ul) && !target.is(li) && !target.is(a)) { 
        ul.hide(); 
       } 
      }); 
     }); 
    } 
}); 
+0

'unidentified'? – DontVoteMeDown

+1

大聲笑'未定義',對不起。 – HelpNeeder

+0

夫婦觀察:你正在添加另一個點擊處理程序來記錄每個找到的錨?你是否打算讓文檔單擊處理程序使用父範圍內的'event'?我很困惑你在這裏做什麼。 – ray

回答

0

我發現在你的代碼的幾個誤區:

所有的
  • 首先移動各環路外的$(document).click()事件。否則,該活動將根據您網頁上有多少個menu>li多次附加。
  • 其次,可能您在alert(target.attr('class'));調用的原因是您沒有爲您的點擊事件提供參數。你的代碼更改爲:

$(document).click(function (event) {});