2009-10-06 118 views
0

我是jQuery的noob ...我希望我已經解釋得很清楚了;我有一個<ul>標題,當我使用$.post將一個條目添加到動態創建的列表時出現。添加的每個條目都有一個與其關聯的刪除/編輯按鈕。當所有條目被刪除時,jQuery隱藏ul標題

標題是這樣的:

<ul class="addedItems">  
    <li>Month</li> 
    <li>Year</li> 
    <li>Cottage</li> 
    <li><span class="edit">edit</span></li> 
    <li><span class="del">delete</span></li> 
</ul> 


This all looks like this: 

Month  Year  Cottage <--this appears after I've added an entry 
--------------------------------  and I want it to stick around unless 
             all items are deleted. 


Dec   1990  Fir  edit/delete <--entries 
Jan   2000  Willow  edit/delete 

我的問題是:是否有某種條件,我可以用jQuery使用隱藏class="header"如果創建的

<ul class="header"> 
    <li>Month</li> 
    <li>Year</li> 
    <li>Cottage</li> 
</ul> 

我的動態列表所有的項目都被刪除?我已經閱讀了條件語句,如isnot與jq,但我並不真正瞭解他們的工作方式。 class="addedItems"中的所有項目都存儲在由JSON生成的data中。

這是刪除功能:

$(".del").live("click", function(){ 
     var del = this; 
     var thisVal = $(del).val(); 
     $.post("delete.php", { dirID : thisVal }, 
     function(data){ 
     if(confirm("Are you sure you want to DELETE this entry?") == true) { 
      if(data.success) { 
      //hide the class="header" here somwhere?? 
      $(del).parents(".addedItems").hide(); 
      } else if(data.error) { 
      // throw error if item does not delete 
      } 
     } 
     }, "json"); 
     return false; 
    }); //end of .del function 

這裏是delete.php

<?php 

    if($_POST) { 


     $data['delID'] = $_POST['dirID']; 

     $query = "DELETE from //tablename WHERE dirID = '{$data['delID']}' LIMIT 1"; 

     $result = $db->query($query); 

     if($result) { 
     $data['success'] = true; 
     $data['message'] = "Entry was successfully removed."; 
     } else { 
     $data['error'] = true; 
     $data['message'] = "Item could not be deleted."; 
     } 

     echo json_encode($data); 
    } 

    ?> 

回答

0

我猜你需要的每一個功能:一旦叫

$(del).parents('.header').each(function(){ 
    if ($(this).children('.addedItems:visible').length == 0) 
    { 
    $(this).hide(); 
    } 
}); 

這個小小的腳本將隱藏沒有任何孩子的.header的任何UL。

地方這個腳本您$(del).parents(".addedItems").hide();

+0

@Ghommey無法讓它工作...... grr。 – Scott 2009-10-06 09:25:09

+0

男人...仍然沒有運氣。你可以在「live」點擊功能中加入「each」嗎?應該不重要嗎? – Scott 2009-10-06 09:37:18

+0

試試這個。你得到一個JavaScript錯誤? – jantimon 2009-10-06 10:02:13

0

後試試這個:

if(confirm("Are you sure you want to DELETE this entry?") == true) { 
    if(data.success) { 
     //hide the class="header" here somwhere?? 
     $(del).parents(".addedItems").hide(); 

     //CHECK IF THERE ARE NOT ANY LI ITEMS IN UL 
     if($("ul.addedItems li").length==0){ 
      $("ul.header").hide();//HIDE HEADER LIST 
     } 

    } else if(data.error) { 
     // throw error if item does not delete 
    } 
} 
+0

你真的添加jQuery的PHP代碼? – jantimon 2009-10-06 09:17:24

+0

是的..沒有真正意識到你可以這樣做..嗯。 – Scott 2009-10-06 09:25:54

+0

是的,你是對的@Ghommey,我是一個傻瓜:( – TheVillageIdiot 2009-10-06 09:33:55

0

基於這裏的一些答案,這就是我想出了:

if($("ul.header").siblings("ul.addedItems").is(":visible")) { 
    } else { 
     $("ul.header").hide(); 
    } 

感謝大家爲了洞察。

+0

就像一個魅力! – Scott 2009-10-06 10:09:25