1

Web ページに何かを送信し、送信後に div を非表示にするアーカイブ機能を Web ページに実装しようとしています。基本的に、div と a タグに動的 ID を作成しています。これが私のコードです:

<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>

それは簡単なようで、コードは正常に投稿されていますが、行は消えません。どんな助けでも大歓迎です、ありがとう!

4

3 に答える 3

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/です

于 2012-04-07T21:14:08.623 に答える
1

まず$(document).ready(...、関数内に含めるべきではありません。これは、Javascript の最外層に存在する必要があります。次に、PHP を使用しているため、選択したい項目は PHP が解析するまで存在しません。代わりに、次の方法を試して、イベント ハンドラーを要素にアクティブにバインドします。

$("#archive_milestone" + id).on("click", function() {
    $("#milestone_" + id).hide("slow");
});
于 2012-04-07T21:11:49.810 に答える
0

archiveMilestone(<?php echo json_encode($milestone['id']); ?>)エスケープが必要な場合があるため、json_encode() を追加してみてください。

于 2012-04-07T21:12:05.807 に答える