2012-04-07 49 views
1

我正在嘗試將存檔功能實現到網頁中,該網頁會將某些內容提交給網頁,然後在提交後隱藏div。基本上,我在一個div和一個標籤上創建一個動態ID。這裏是我的代碼:單擊時需要隱藏div

<div class="section" id="milestone_<?php echo $milestone['id']; ?>"> 
    Stuff goes here 
    <a href="javascript:void(archiveMilestone(<?php echo $milestone['id']; ?>))" id="archive_milestone_<?php echo $milestone['id']; ?>">(Archive)</a> 
</div> 

<script> 
function archiveMilestone(id) 
{ 
    var dataString = 'remove_milestone='+ id; 
    $.post("<?php echo $_SERVER['REQUEST_URI']; ?>",dataString); 
    $(document).ready(function(){ 
     $('a#archive_milestone_' + id).click(function(){ 
     $('#milestone_' + id).hide('slow'); 
     }) 
    }); 
} 
</script> 

現在看來似乎應該是簡單的,並且代碼是越來越成功發佈,但該行不會消失。任何幫助將不勝感激,謝謝!

回答

2

HTML

<div class="section" id="milestone_<?php echo $milestone['id']; ?>"> 
    Stuff goes here 
    <a href="#" class="btnArchive">Archive</a> 
</div> 

腳本

$(function(){ 

$(".btnArchive").click(function(){ 
    var item=$(this); 
    var itemId=item.parent().attr("id").split('_')[1] 
    $.post("yourserverpage.php",{ remove_milestone : itemId } ,function(){ 
    item.parent().fadeOut("slow"); 
    });  
});  
}); 

這裏是的jsfiddle http://jsfiddle.net/hQkVZ/10/

+0

啊,很好的替代解決方案。更乾淨。 – 2012-04-07 21:14:39

+0

@DustinGraham:感謝jQuery團隊。他們是令我們的生活更加美好的人! – Shyju 2012-04-07 21:15:16

+0

我不需要去掉id標記中的「milestone_」以便將它作爲整數處理? – user882134 2012-04-07 21:27:26

1

首先,您不應該在函數中有$(document).ready(...。這應該存在於Javascript的最外層。其次,你使用PHP,所以你想選擇的項目在PHP解析它們之前不存在。儘量不要使用以下的事件處理程序,積極綁定到一個元素:

$("#archive_milestone" + id).on("click", function() { 
    $("#milestone_" + id).hide("slow"); 
}); 
0

你也可以嘗試archiveMilestone(<?php echo json_encode($milestone['id']); ?>)添加json_encode(),因爲它可能需要進行轉義。