2012-02-28 64 views
1

我對此代碼處於停滯狀態。我有一個頁面包含多個div,其中包含無序列表,使用jquery顯示/隱藏,我已將它轉換爲標籤內容。我也有一個刪除列表項的過濾器。如果過濾器已從標籤中刪除所有項目,則會顯示一條消息,警告用戶過濾器已刪除此標籤中的所有內容。當過濾器被移除時,僅針對活動(可見)選項卡移除警告消息。過濾器有效地顯示/刪除非活動(隱藏)選項卡中的列表項,但我無法讓警告消息消失。請看看,並感謝您的時間:是jquery忽略隱藏div在我的每個()?

$('div.eventContent').each(function (index, element) { 
     { 
      var these_li = $ (element).find('li.eventContentItem:visible'); 
      if (these_li.length > 0) 
      { 
       $ (element).find('.noVisibleEvents').hide(); 
      } 
      else 
      { 
       $(element).find('.noVisibleEvents').show(); 
      } 
      these_li = 0; 
     } 
    }) 
+0

你可以發佈你的HTML嗎?此外,您似乎在每個塊之後都會丟失分號。 – SenorAmor 2012-02-28 03:10:34

+0

@SenorAmor除非你的代碼是內聯的,否則你不需要js中的分號。 – Birdman 2012-02-28 03:13:58

+0

@Birdman - 我同意你的_generalisation_關於分號(有一些你確實需要它們的情況),但是關於函數名和開頭'(' - 這樣起作用的$(例子)''很好,你可以嗎?舉一個無法處理它的瀏覽器的例子嗎? – nnnnnn 2012-02-28 03:43:31

回答

0

我猜你的問題可能要涉及到繼承或:可見 jQuery選擇。正如文檔所說,jQuery會考慮隱藏到隱藏父項包含的所有元素。因此,您應該檢查css display屬性,以便在元素隱藏到標籤中時可以顯示或不顯示。 然而,代碼複雜得多

$('div.eventContent').each(function() { 
    { 
     var isEmpty = true; 

     $(this).find('li.eventContentItem').each(function() { 
      if ($(this).css('display') != 'none') { 
       isEmpty = false; 
       return false; // exits the loop 
      } 
     }); 

     if (isEmpty)    

      $ (this).find('.noVisibleEvents').hide(); 

     else 

      $(this).find('.noVisibleEvents').show(); 


}) 
+0

謝謝!我必須改變的唯一情況是最後的if/else - hide()和show()出錯了,它現在按需要工作! – 2012-02-28 14:39:44